如何更改jasmine-node异步规范的超时

Bri*_*Low 74 node.js jasmine

如何在不诉诸run/waitsFor块的情况下通过此测试?

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

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

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

         done();
     });
});
Run Code Online (Sandbox Code Playgroud)

Fra*_*sco 92

根据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;
    });
});
Run Code Online (Sandbox Code Playgroud)

  • @Brian这应该是现在接受的答案. (2认同)
  • 值得注意的是,这可能必须发生在“it”之前。当您进行测试时,“done”似乎已经与“it”开始之前的“DEFAULT_TIMEOUT_INTERVAL”挂钩。 (2认同)

Bri*_*Low 68

发送此功能的拉取请求(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
Run Code Online (Sandbox Code Playgroud)


Col*_*May 43

要设置全局Jasmine-Node超时,请执行以下操作:

jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds
Run Code Online (Sandbox Code Playgroud)

感谢开发人员Gabe Hicks通过调试找出.getEnv()部分尽管在README文档中有错误信息,声称它是通过设置jasmine.DEFAULT_TIMEOUT_INTERVAL来完成的.

如果要为it()设置一个自定义超时,可以尝试将超时(毫秒)作为第三个参数(在字符串语句和函数之后)传递.还有那个正在做的例子在这里,但我不知道如果自定义超时比茉莉花的默认不再会发生什么.我希望它会失败.

  • 更新任何人在2014年绊倒这个答案:对于Jasmine 2设置jasmine.DEFAULT_TIMEOUT_INTERVAL有效. (27认同)
  • 它适用于我使用Jest + Jasmine的全新设置。我只是在用于所有测试的全局配置文件中添加了``jasmine.DEFAULT_TIMEOUT_INTERVAL = 12000;`'',它可以按预期工作。 (2认同)

d-_*_*_-b 18

看起来您现在可以将其添加为该it函数的最后一个参数:

describe('my test', function(){
    it('works', function(done){
        somethingAsync().then(done);
    }, 10000); // changes to 10 seconds
});
Run Code Online (Sandbox Code Playgroud)


dan*_*y74 5

在Angular中,将其放在您的describe块之外:

jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
Run Code Online (Sandbox Code Playgroud)

这适用于.spec.ts文件中的所有测试