プロミスが返された後にフィルターが呼び出されたと主張するのに苦労しています。
このコードはコントローラから呼び出され、コントローラはデータを取得して 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
?
フィルター自体を個別にテストしたので、それが機能していることがわかります。カルマは、前述のアサーションの失敗を報告するときに、データを変換していることを示しています。