1

一部の単体テストで Sinon の偽のタイマーを使用しようとしています (Mocha を使用した Karma ランナー)。関数に追加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 に答える