我有一个摩卡测试,我正在尝试运行,但它一直给我以下错误
错误:超时超过 2000 毫秒。对于异步测试和钩子,请确保调用"done((">
it('should login into account', (done) => {
let user_login = require("../../data/login.json");
mongoManager.insertDocuments("user", user_login.content, () => {
loginPage.setUserName('demodgsdg');
loginPage.setPassword('123');
loginPage.submit();
browser.waitForAngularEnabled(true);
Assert.equal(element(by.id('navbar')).isDisplayed(), true, "login page is not loaded");
setTimeout(done(), 50000);
done();
});
});
在摩卡中运行异步测试以使其不超过分配时间的最佳方法是什么?还是应该在测试函数上设置超时
你需要这样做
it('should login into account', function (done) {
this.timeout(50000);
let user_login = require("../../data/login.json");
mongoManager.insertDocuments("user", user_login.content, () => {
loginPage.setUserName('demodgsdg');
loginPage.setPassword('123');
loginPage.submit();
browser.waitForAngularEnabled(true);
Assert.equal(element(by.id('navbar')).isDisplayed(), true, "login page is not loaded");
setTimeout(done(), 50000);
done();
});
});
如果您阅读 https://mochajs.org/#timeouts
不鼓励将箭头函数("lambdas"(传递给摩卡。由于它的词法绑定,此类函数无法访问摩卡上下文。例如,由于 lambda 的性质,以下代码将失败:
describe('my suite', () => {
it('my test', () => {
// should set the timeout of this test to 1000 ms; instead will fail
this.timeout(1000);
assert.ok(true);
});
});
如果你不需要使用 Mocha 的上下文,lambda 应该可以工作。但是,如果最终出现需求,则结果将更难重构。