你如何使用Jasmine监视AngularJS的$ timeout?

  发布于 2023-02-13 12:01

我试图窥探$ 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作为函数,而不是对象.

1 个回答
  • 陷入同样的​​问题,并最终用间谍装饰$ timeout服务.

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

    写了更多关于为什么这里有用的信息.

    2023-02-13 12:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有