web-dev-qa-db-ja.com

ジャスミンノード非同期仕様のタイムアウトを変更するにはどうすればよいですか

Run/waitsForブロックに頼らずにこのテストに合格するにはどうすればよいですか?

it("cannot change timeout", function(done) {

     request("http://localhost:3000/hello", function(error, response, body){

         expect(body).toEqual("hello world");

         done();
     });
});
73
Brian Low

この機能のプルリクエストを送信しました( https://github.com/mhevery/jasmine-node/pull/142

it("cannot change timeout", function(done) {

  request("http://localhost:3000/hello", function(error, response, body){

     expect(body).toEqual("hello world");

     done();
  });

}, 5000); // set timeout to 5 seconds
66
Brian Low

Jasmine docs に従って、仕様で直接設定できます。

describe("long asynchronous specs", function() {

    var originalTimeout;

    beforeEach(function() {
        originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
        jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
    });

    it("takes a long time", function(done) {
        setTimeout(function() {
            done();
        }, 9000);
    });

    afterEach(function() {
        jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
    });
});
86
Francisco

グローバルJasmine-Nodeタイムアウトを設定するには、次を実行します。

jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds

README doc の誤った情報にもかかわらず、jasmine.DEFAULT_TIMEOUT_INTERVALを設定することでそれが行われたと主張しているにもかかわらず、デバッグを介して.getEnv()部分を把握した開発者Gabe Hicksに感謝します。

1つのit()だけにカスタムタイムアウトを設定する場合は、タイムアウト(ミリ秒)を3番目の引数として(文字列ステートメントと関数の後に)渡してみてください。 here が実行されている例がありますが、カスタムタイムアウトがJasmineのデフォルトよりも長い場合はどうなるかわかりません。失敗することを期待しています。

43
Colin May

it関数の最後の引数として追加できるようになりました:

describe('my test', function(){
    it('works', function(done){
        somethingAsync().then(done);
    }, 10000); // changes to 10 seconds
});
18
d-_-b

Angularでは、これを記述ブロックの外側に配置します。

jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;

これは、.spec.tsファイル内のすべてのテストに適用されます

5
danday74

なぜsetTimeout()をスパイしないのですか?

何かのようなもの:

var spy = spyOn(window, 'setTimeout').andCallFake(function (func, timeout) {
    expect(timeout).toEqual(2500);
    func();
});

setTimeOut(function () { ... }, 2500);
expect(spy).toHaveBeenCalled();
1
ggozad

追加:jasmine.DEFAULT_TIMEOUT_INTERVAL = yourTime;ヘルパーファイルで機能しました。

0
Ivan Rangel