gpt4 book ai didi

unit-testing - 你如何用 Jasmine 监视 AngularJS 的 $timeout ?

转载 作者:行者123 更新时间:2023-12-04 14:28:44 24 4
gpt4 key购买 nike

我试图监视 $timeout 以便我可以验证它没有被调用。具体来说,我的生产代码(见下文)将 $timeout 作为函数而不是对象调用:

$timeout(function() { ... })

并不是
$timeout.cancel() // for instance

然而,Jasmine 需要一个被监视的对象,如下所示:
spyOn(someObject, '$timeout')

我不知道“someObject”会是什么。

我正在使用 Angular 模拟,如果这有什么不同的话。

编辑:我尝试测试的相关生产代码如下所示:
EventHandler.prototype._updateDurationInOneSecondOn = function (call) {
var _this = this;
var _updateDurationPromise = this._$timeout(function () {
call.duration = new Date().getTime() - call.startTime;
_this._updateDurationInOneSecondOn(call);
}, 1000);
// ... more irrelevant code
}

在特定的测试场景中,我试图断言 $timeout 从未被调用过。

编辑 2:明确指定我使用 $timeout 作为函数,而不是对象。

最佳答案

遇到了同样的问题,最终用 spy 装饰了 $timeout 服务。

beforeEach(module(function($provide) {
$provide.decorator('$timeout', function($delegate) {
return sinon.spy($delegate);
});
}));

写了更多关于为什么这有效 here .

关于unit-testing - 你如何用 Jasmine 监视 AngularJS 的 $timeout ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20345552/

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