如何不通过run / waitsFor块就可以通过此测试?
it("cannot change timeout", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
expect(body).toEqual("hello world");
done();
});
});
Answers:
您现在可以按照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;
});
});
发送对此功能的拉取请求(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-Node超时,请执行以下操作:
jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds
尽管在README文档中有错误信息,但开发人员Gabe Hicks通过调试找出了.getEnv()部分,该声明声称这是通过设置jasmine.DEFAULT_TIMEOUT_INTERVAL完成的。
如果只想为一个it()设置自定义超时,则可以尝试将超时(毫秒)作为第三个参数传递(在字符串语句和函数之后)。还有的是正在做的例子在这里,但我不知道如果自定义超时比茉莉花的默认不再会发生什么。我希望它会失败。
jasmine.DEFAULT_TIMEOUT_INTERVAL = 12000;
了一个用于所有测试的全局配置文件,它可以按预期工作。
在describe
声明后加上:
describe("A saves to DB", function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
添加:jasmine.DEFAULT_TIMEOUT_INTERVAL = yourTime;
在帮助文件上为我工作。
为什么不通过监视 setTimeout()
呢?
就像是:
var spy = spyOn(window, 'setTimeout').andCallFake(function (func, timeout) {
expect(timeout).toEqual(2500);
func();
});
setTimeOut(function () { ... }, 2500);
expect(spy).toHaveBeenCalled();
就我而言,我有多个测试案例,而在使用上述解决方案时,我正在使用:
beforeEach(function() {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
DEFAULT_TIMEOUT_INTERVAL在第一个测试用例中未更新,因此我必须添加以下内容:
beforeAll(() => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
})
到我的代码以成功运行所有测试。
在以下文件中将j $ .DEFAULT_TIMEOUT_INTERVAL更改为10000:npm \ node_modules \ jasmine-core \ lib \ jasmine-core
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
在使用Jasmine + Jest从头开始构建的全新设置上,不断变化的价值对我来说是成功的窍门。它按预期工作。