【发布时间】:2015-11-05 21:16:10
【问题描述】:
我无法断言我的过滤器在返回承诺后已被调用。
此代码从控制器调用,然后从 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 的调用?
我已经单独测试了过滤器本身,所以知道它正在工作,并且 karma 告诉我它在报告上述断言失败时正在转换数据。
【问题讨论】:
标签: javascript angularjs filter jasmine spy