如何在角度服务中模拟此代码中的第二个调用。
myService.promise.then(function () {
userConfig = userService.getUserConfiguration();
}).then(function () {
//do more stuff
})
我知道我可以按如下方式模拟第一个电话:
beforeEach(inject(function ($q) {
var deferred = $q.defer();
spyOn(myService.promise, 'then').and.returnValue({$promise: deferred.promise});
deferred.resolve();
}));
答案 0 :(得分:0)
由于您使用第一个间谍返回deferred.promise
,您可以只监视deferred.promise.then
以创建第二个间谍。
spyOn(returnObject.$promise, 'then')
之类的操作,假设变量名为returnObject。
beforeEach(inject(function ($q) {
var deferred_1 = $q.defer();
var return_1 = {$promise: deferred_1.promise};
var deferred_2 = $q.defer();
var return_2 = {$promise: deferred_2.promise};
spyOn(myService.promise, 'then').and.returnValue(return_1);
spyOn(return_1.$promise, 'then').and.returnValue(return_2);
deferred.resolve();
}));