我正在编写单元测试用例来测试user.test.js中user.service.js的方法,但是如果测试用例的数量增加,我会收到此错误: "错误:超出2000ms的超时。对于异步测试和挂钩,请确保" done()"叫做;如果返回Promise,请确保它已解决。"
这里我将plunker链接附加到最低要求的文件:
https://plnkr.co/edit/3us5ja?p=info
describe('testing', function() {
describe('random test cases 1', function() {
it('Get all contacts 1', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' +
JSON.stringify(result));
});
});
it('Get all contacts 2', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
it('Get all contacts 3', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
});
describe('random test cases 2', function() {
it('Get all contacts 21', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
it('Get all contacts 22', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
it('Get all contacts23', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
});
describe('random test cases 3', function() {
it('Get all contacts 31', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
it('Get all contacts 32', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
it('Get all contacts 33', function() {
return contactService.getAll((result) => {
//console.log('all contact data: ' + JSON.stringify(result));
});
});
});
});
这里的一些文件不相关。我尝试过的事情是:
1)所有测试用例的超时超时,并在几个测试用例后面临同样的问题。
2)在每个测试用例中调用done()。
3)在描述的配置超时,它,命令行也在package.json。
我要回复DAO的承诺。因此,当承诺得到解决时,我们无法做出预测。我们也无法预测测试用例的顺序,因此我们也无法为测试套件或单个测试用例增加超时。其他服务的测试用例也很少。那么,有没有办法解决这个问题。
答案 0 :(得分:1)
这通常意味着测试未在其成功状态中调用done()
。您可以致电done()
来解决此问题。
describe('testing', () => {
describe('random test cases 1', () => {
it('Gets all contacts 1', (done) => {
return contactService.getAll((result) => {
done();
});
});
it('Gets all contacts 2', (done) => {
return contactService.getAll((result) => {
done();
});
});
});
describe('random test cases 2', () => {
it('Gets all contacts 21', (done) => {
return contactService.getAll((result) => {
done();
});
});
it('Gets all contacts 22', (done) => {
return contactService.getAll((result) => {
done();
});
});
});
});
如果您仍然看到错误,可能是没有调用回调,请重新检查异步函数,例如:上面contactService.getAll()
。另请仔细阅读https://mochajs.org/#asynchronous-code。
答案 1 :(得分:-1)
你需要为每个案件传递完成回调 - 将解决你的问题。
describe('userDao', function() {
this.timeout(3000)
你为什么不在这里使用sinon?
如果您不想使用sinon.stub,则需要在
之后增加超时=RIGHT(A1,LEN(A1)-3)+RIGHT(B1,LEN(B1)-3)+RIGHT(C1,LEN(C1)-3)
我在此发布了一个示例:https://delwar20.wordpress.com/2017/12/29/using-sinon-to-stub-mongoose-calls-and-return-promise/
希望它能帮到你