我在一个测试用例中提交了一个网络请求,但这有时需要超过2秒(默认超时)。
如何增加单个测试用例的超时时间?
我在一个测试用例中提交了一个网络请求,但这有时需要超过2秒(默认超时)。
如何增加单个测试用例的超时时间?
当前回答
您还可以考虑采用不同的方法,用存根或模拟对象替换对网络资源的调用。使用Sinon,您可以将应用程序与网络服务分离,集中精力进行开发。
其他回答
给你:http://mochajs.org/#test-level
it('accesses the network', function(done){
this.timeout(500);
[Put network code here, with done() in the callback]
})
对于箭头函数,使用方法如下:
it('accesses the network', (done) => {
[Put network code here, with done() in the callback]
}).timeout(500);
您还可以考虑采用不同的方法,用存根或模拟对象替换对网络资源的调用。使用Sinon,您可以将应用程序与网络服务分离,集中精力进行开发。
这对我很管用!找不到任何东西让它工作之前()
describe("When in a long running test", () => {
it("Should not time out with 2000ms", async () => {
let service = new SomeService();
let result = await service.callToLongRunningProcess();
expect(result).to.be.true;
}).timeout(10000); // Custom Timeout
});
对于Express上的测试导航:
const request = require('supertest');
const server = require('../bin/www');
describe('navigation', () => {
it('login page', function(done) {
this.timeout(4000);
const timeOut = setTimeout(done, 3500);
request(server)
.get('/login')
.expect(200)
.then(res => {
res.text.should.include('Login');
clearTimeout(timeOut);
done();
})
.catch(err => {
console.log(this.test.fullTitle(), err);
clearTimeout(timeOut);
done(err);
});
});
});
本例中测试时间为4000 (4s)。
注意:setTimeout(done, 3500)是次要的,因为在测试时间内调用了than done,但是clearTimeout(timeOut)避免了在所有这些时间内使用than。
从命令行:
mocha -t 100000 test.js