测试 Mocha/supertest/expect MEAN-stack HTTP 请求延迟 4 秒完成
Testing Mocha/supertest/expect MEAN-stack HTTP Request 4 seconds delay done
我正在使用 Mocha/supertest/expect 库在 MEAN-Stack 中测试 HTTP 请求,需要 4 秒才能到达 return:
it('should return product data', (done) => {
request(app)
.get('/P/Product')
.expect(200)
.expect((res) => {
expect(res.body[0]._id).toEqual('123456789')
})
.end(done);
});
该函数应在 HTTP 请求完成后最后执行 "done" 回调。但我收到错误消息:
1) should return product data:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a
Promise, ensure it resolves.
我认为它适用于未嵌套的期望调用。我将如何在其他期望调用中使用嵌套的期望调用来做到这一点,就像上面的例子一样?
也许请求的响应时间太长,导致 Mocha 默认的 2 秒测试超时发生。可能尝试从 CLI 到 url 的 cURL 以查看您返回或向上 mocha test time threshold 进行测试的时间。
describe('testing', function() {
// This applies the timeout of 5 seconds to each test.
this.timeout(5000);
it('should return product data', function() {
// This applies a timeout of 5 seconds for this test only
this.timeout(5000);
request(app)
.get('/P/Product')
.expect(200)
.expect((res) => {
expect(res.body[0]._id).toEqual('123456789')
})
.end(done);
});
});
如果您认为 expect
调用链导致超时问题,另一种方法是使用 promise 方法。
it('should return product data', () => {
request(app)
.get('/P/Product')
.then((res) => {
expect(res.status).to.equal(200);
expect(res.body[0]._id).to.equal('123456789');
})
});
我得到了解决方案,问题是箭头函数的使用:(done)=>{...}
,而不是正常的回调,它是这样工作的:
it('should async square a number', function(done) {
this.timeout(2005);
utils.asyncSquare(5, (res) => {
expect(res).toBe(25).toBeA('number');
done();
});
});
或者如果您在包测试脚本中全局设置超时也有效:
"test": "mocha --timeout 3000 **/*.test.js",
我正在使用 Mocha/supertest/expect 库在 MEAN-Stack 中测试 HTTP 请求,需要 4 秒才能到达 return:
it('should return product data', (done) => {
request(app)
.get('/P/Product')
.expect(200)
.expect((res) => {
expect(res.body[0]._id).toEqual('123456789')
})
.end(done);
});
该函数应在 HTTP 请求完成后最后执行 "done" 回调。但我收到错误消息:
1) should return product data:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a
Promise, ensure it resolves.
我认为它适用于未嵌套的期望调用。我将如何在其他期望调用中使用嵌套的期望调用来做到这一点,就像上面的例子一样?
也许请求的响应时间太长,导致 Mocha 默认的 2 秒测试超时发生。可能尝试从 CLI 到 url 的 cURL 以查看您返回或向上 mocha test time threshold 进行测试的时间。
describe('testing', function() {
// This applies the timeout of 5 seconds to each test.
this.timeout(5000);
it('should return product data', function() {
// This applies a timeout of 5 seconds for this test only
this.timeout(5000);
request(app)
.get('/P/Product')
.expect(200)
.expect((res) => {
expect(res.body[0]._id).toEqual('123456789')
})
.end(done);
});
});
如果您认为 expect
调用链导致超时问题,另一种方法是使用 promise 方法。
it('should return product data', () => {
request(app)
.get('/P/Product')
.then((res) => {
expect(res.status).to.equal(200);
expect(res.body[0]._id).to.equal('123456789');
})
});
我得到了解决方案,问题是箭头函数的使用:(done)=>{...}
,而不是正常的回调,它是这样工作的:
it('should async square a number', function(done) {
this.timeout(2005);
utils.asyncSquare(5, (res) => {
expect(res).toBe(25).toBeA('number');
done();
});
});
或者如果您在包测试脚本中全局设置超时也有效:
"test": "mocha --timeout 3000 **/*.test.js",