如何更改jasmine-nodeasynchronous规范的超时时间

我怎样才能得到这个testing通过无需诉诸运行/ waitsFor块?

it("cannot change timeout", function(done) { request("http://localhost:3000/hello", function(error, response, body){ expect(body).toEqual("hello world"); done(); }); }); 

发送拉请求这个function( 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 

你可以(现在)直接在规范中设置,按照Jasmine文档 。

 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; }); }); 

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

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

感谢开发人员Gabe Hicks通过debugging找出.getEnv()部分,尽pipe在README文档中声称它是通过设置jasmine.DEFAULT_TIMEOUT_INTERVAL来完成的。

如果你想为一个自定义超时设置一个自定义超时(),你可以尝试传递超时(毫秒)作为第三个参数(在string语句和函数之后)。 有一个这样做的例子,但我不知道如果自定义超时时间比茉莉花的默认情况下会发生什么。 我期望它会失败。

看起来你现在可以将它添加为它的最后一个参数:

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

为什么不通过监视setTimeout()

就像是:

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

在以下文件中将j $ .DEFAULT_TIMEOUT_INTERVAL更改为10000:npm \ node_modules \ jasmine-core \ lib \ jasmine-core