2017-03-06 12 views
1

私はjavascriptクラスをテストする次のsinon.js/chai.jsを持っています。一部の環境では、時間を節約できないテスト機能はなぜですか?

describe('tick', function() { 
 
    beforeEach(function() { 
 
     this.clock = sinon.useFakeTimers(); 
 
    }); 
 
    afterEach(function() { 
 
     this.clock = sinon.restore(); 
 
    }); 
 
    it('should increase the time waited for all translators', function() { 
 
     let queue = new TranslatorQueue(); 
 
     queue.join("translator1"); 
 
     this.clock.tick(1000); 
 
     expect(_.head(queue.queue).timeWaiting).to.equal(1); 
 

 
     queue.join("translator2"); 
 
     this.clock.tick(1000); 
 
     expect(_.head(queue.queue).timeWaiting).to.equal(2); 
 
     expect(_.last(queue.queue).timeWaiting).to.equal(1); 
 
    }); 
 
    });

テストでは、私の開発マシン上で正常に渡しますが、テストが完了していないと私のステージングサーバー上でテストを実行しようとすると無限ループに入るように見えません。私はタイマーを嘲笑することと関係があると思いますが、どうすればこの問題のトラブルシューティングを行うことができますか?

答えて

1

あなた自身の質問に答えることのすべては、ここで働いたようです。

今後の参考になるように、この問題はおそらく私たちが望むものよりも多くのオーバーリーチがあるためです。私はhttps://github.com/sinonjs/sinon/issues/484

:私のコードを考えると

は唯一私がここに適切な情報を見つけ、私はテストが

this.clock = sinon.useFakeTimers("setInterval");

する偽の呼び出しを変更して実行するために取得することができたsetInterval()を使用しています100%はなぜ私のマシン上で動作するのですが、サーバでは動作しないのでしょうか。...

+0

haha​​私はこのことが起こると大好きです。これは[Rubber Duck Debugging](https://spin.atomicobject.com/2015/08/18/rubber-duck-debugging/)と呼ばれています:-) – Thatkookooguy

関連する問題