我正在测试一个MEAN应用程序。每项测试都只是确保我能够获得正确的响应代码。在我的路由器中,他们使用res.send()成功返回json。
这里给出的第二个测试只有在第一个被注释掉时才会通过。如果我注释掉第一个测试,第一个测试通过,但第二个测试超时。
这种行为对于这两个测试并不是唯一的。在接受lat和long之前,还有另一个测试。如果我评论出来,接受lat和long作品。如果我留下它,接受lat和很长时间。我需要做些什么才能让这些异步测试通过?
我已经尝试将超时设置为60秒,但这也不起作用。
var assert = require('assert');
var server = require('../bin/www');
var request = require('supertest');
request = request('http://localhost:3000');
describe('POST service request', function(){
this.timeout(5000);
var postRequest = request.post('/requests.json').type('form');
... (other commented out tests) ...
// it('accepts lat and long', function (done){
// postRequest.send({
// service_code: 2000,
// long: 400,
// lat: 3003
// }).expect(200, done);
// });
it('accepts an address id only', function (done){
console.log('22222')
postRequest.send({
service_code: 100,
address_id: 400
}).expect(200, done);
});
});
以下是取消注释时的一些记录输出:
Listening on port 3000
POST service request
===REQUEST STARTED===
Trying to save a request.
DB connected.
Saved.
POST /requests.json 200 40.368 ms - 49
✓ accepts lat and long (47ms)
22222
1) accepts an address id only
1 passing (5s)
1 failing
1) POST service request accepts an address id only:
Error: timeout of 5000ms exceeded
at null.<anonymous> (/usr/lib/node_modules/mocha/lib/runnable.js:159:19)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
npm ERR! Test failed. See above for more details.
npm ERR! not ok code 0
然后它超时。
答案 0 :(得分:1)
您无法在测试之间重复使用相同的postRequest,因为send
请求会产生副作用。在每个测试中创建一个新请求:
it('accepts lat and long', function (done){
request.post('/requests.json').type('form').send({
service_code: 2000,
long: 400,
lat: 3003
}).expect(200, done);
});
it('accepts an address id only', function (done){
request.post('/requests.json').type('form').send({
service_code: 100,
address_id: 400
}).expect(200, done);
});