提前感谢您的帮助。
我有一个 Sails.Js (v11) 应用程序,我正在使用 Mocha 进行单元测试。目前,我每次尝试运行测试时都会遇到超时错误:
Error: timeout of 30000ms exceeded. Ensure the done() callback is being called in this test.
我在我的测试 Bootstrap 文件上设置了 20000 的超时,在 mocha 上设置了 30 秒。
引导文件:
var Sails = require('sails');
// Global before hook
before(function (done) {
this.timeout(20000);
// Lift Sails with test database
Sails.lift({
log: {
/**
* for debugging:
* level: 'error'
*/
level: 'error'
/**
* for running full tests without sails console errors
* level: 'silent'
*/
//level: 'silent'
},
hooks: {
grunt: false
},
models: {
connection: 'test',
migration: 'drop'
}
}, function(err, server) {
sails = server;
if (err)
return done(err);
done(err, sails);
});
});
// Global after hook
after(function (done) {
console.log(); // Skip a line before displaying Sails lowering logs
Sails.lower(done);
});
Mocha :
--timeout 30s
知道如何解决这个错误吗?
最佳答案
尝试从您的 global after hook
中删除所有 done() 函数调用。如果函数不是 异步 Hook
,则不需要 done() 调用。
// Global after hook
after(function () {
console.log(); // Skip a line before displaying Sails lowering logs
Sails.lower();
});
编辑
我想我明白了你的问题。您需要执行 sails.lower();
而不是 Sails.lower();
(注意大写字母)
这是另一个例子:
before(function (done) {
var SailsApp = require('sails').Sails;
var Sails = new SailsApp();
Sails.lift({
}, function (err, sails) {
done(err, sails);
});
});
describe.skip("dummy test", function () {
it('is a pending dummy test case', function () {
});
});
after(function (done) {
sails.lower();
done();
});
关于javascript - Sails.js Mocha 超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318097/