我编写了测试代码,并且工作正常,但是在添加了与当前代码无关的其他路由之后,代码被破坏了,尤其是在此时:
1)“应该创建新的待办事项”的“之前”钩子: 错误:超时超过2000毫秒。确保此测试中调用了done()回调`。
const todos = [{
_id: new ObjectID(),
text: 'first test todo',
completed: false,
completedAt: null
}, {
_id: new ObjectID(),
text: 'second test todo',
completed: true,
completedAt: 333
}];
beforeEach((done) => {
Todo.remove({}).then(() => {
return Todo.insertMany(todos);
}).then((docs) => {
done();
});
})
describe('post /todo', () => {
it('should create new todo', (done) => {
let text = 'here from supertest';
request(app)
.post('/todos')
.send({
text
})
.expect(200)
.expect((res) => {
expect(res.body.text).toBe(text);
})
.end((err, res) => {
if (err) {
return done(err);
}
Todo.find({
text
}).then((res) => {
expect(res.length).toBe(1);
expect(res[0].text).toBe(text);
done();
})
.catch((e) => {
done(e);
});
});
});
});
整个项目为in this github libary called TestMongo,您可以在其中检查最后两个提交,这些提交存在我所面临的测试问题,但是当您由邮递员尝试时,它可以正常工作。当一个从末尾恢复到第三次提交时,测试将正常进行。
答案 0 :(得分:1)
可能我们需要将测试的超时时间增加到更大的数量
beforeEach(function(done) { // dont use arrow function to use this.timeout
this.timeout(5000); // override default 2000 ms
Todo.remove({}).then(() => {
return Todo.insertMany(todos);
}).then((docs) => {
done();
});
})
希望有帮助