我正在尝试运行摩卡测试,但它一直给我以下错误
错误:超出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();
});
});
什么是在mocha中运行异步测试的最佳方式,以便它不超过其规定的时间?或者我应该在测试功能上设置超时
答案 0 :(得分:2)
你需要这样做
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”)传递给Mocha。由于它的词汇绑定,这些函数无法访问Mocha上下文。例如,由于lambdas的性质,以下代码将失败:
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的上下文,lambdas应该可以工作。但是,如果最终需要,结果将更难以重构。