У меня возникли проблемы с утверждением, что мой фильтр был вызван после того, как было возвращено обещание.Как проверить, что фильтр вызван в службе
Этот код вызывается из контроллера, который затем вытягивает данные для фильтрации от службы HTTP GET:
getPermissions(){
return this.DataService.getPermissionsLOV().then((data) => {
return this.$filter('chunkCollection')(data, 3);
});
}
Мой тест выглядит так:
it('should get the permissions',() => {
spyOn(service, 'getPermissions').and.callThrough();
spyOn(DataService, 'getPermissionsLOV').and.callFake(function(){
var defer = this.$q.defer();
defer.resolve(mockData);
return defer.promise;
});
let resp;
service.getPermissions().then((data) => {
resp = data;
});
scope.$digest();
expect(service.getPermissions).toHaveBeenCalled();
expect(DataService.getPermissionsLOV).toHaveBeenCalled();
expect(resp).toEqual(mockData);
});
утверждение expect(resp).toEqual(mockData);
терпит неудачу как ответ отфильтрован на chunkCollection
, но я не знаю, как проверить этот вызов на $filter
?
Я сам протестировал фильтр, так что знаю, что работает, и карма говорит мне, что он преобразует данные, сообщая об отказе вышеупомянутого утверждения.
Как бы интегрировать это в тестовый пример? К сожалению, я новичок в этом, так что немного борюсь. – RyanP13
@ RyanP13 уверен, расширен мой ответ. Дайте мне знать, если это поможет – Yunchi
Спасибо! Я искал такой пример. Один из немногих примеров, которые я видел, показывает, как издеваться над фильтром и использовать callFake в своей функции, чтобы фильтр мог возвращать разные значения в разных сценариях. – jsparks