我無法斷言在返回承諾後調用了我的過濾器。如何在服務中調用過濾器進行單元測試
這個代碼從一個控制器,其然後再換數據從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