1

我试图在我的一些单元测试中使用 Sinon 的假计时器(Karma runner with Mocha)。一旦我添加clock = sinon.useFakeTimers();到我的setup()函数中,我就会收到以下错误:

Chrome 27.0 (Mac) slidebox directive "before each" hook FAILED
    Error: global leaks detected: setTimeout, setInterval, clearTimeout, clearInterval

显然,诗乃需要对这些全局变量做点什么来发挥它的魔力。我如何告诉 Karma 忽略这些特定的全局变量?

编辑:

这是为了测试使用 setInterval 的 AngularJS 指令。如果 Angular 提供了另一种更好/更容易测试的方法,我很乐意改用它。

4

1 回答 1

1

我相信你会想在你的指令中使用 $timeout 。这将使您能够在测试中对其进行监控:http: //docs.angularjs.org/api/ng .$timeout

或者如果你需要一个间隔,你可能想要包装你自己的服务。请参阅此问题:https ://github.com/angular/angular.js/issues/2402了解可能的模式。

于 2013-05-23T14:05:36.293 回答