gpt4 book ai didi

javascript - 测试 promise 链 Angular

转载 作者:行者123 更新时间:2023-11-28 20:54:59 25 4
gpt4 key购买 nike

如何在 Angular 服务的这段代码中模拟对 then 的第二次调用。

 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();
}));

最佳答案

由于您要使用第一个 spy 返回 deferred.promise,因此您只需监视 deferred.promise.then 即可创建第二个 spy 。

编辑:抱歉,我没有看到您将它包裹在一个对象中。您可以将该对象分配给一个变量并返回它。然后您可以为您的 spy 引用该对象的属性并执行类似 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();
}));

关于javascript - 测试 promise 链 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com