Selenium 如何避免mocha异步测试超时
我有一个摩卡咖啡测试,我正试图运行,但它不断给我以下错误 错误:超过2000毫秒的超时时间。对于异步测试和挂钩,请确保调用doneSelenium 如何避免mocha异步测试超时,selenium,protractor,timeout,mocha.js,assert,Selenium,Protractor,Timeout,Mocha.js,Assert,我有一个摩卡咖啡测试,我正试图运行,但它不断给我以下错误 错误:超过2000毫秒的超时时间。对于异步测试和挂钩,请确保调用done it('should login into account', (done) => { let user_login = require("../../data/login.json"); mongoManager.insertDocuments("user", user_login.content, () => {
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中运行异步测试的最佳方式是什么,这样它就不会超过它的预期时间?或者我应该设置测试函数的超时时间吗?您需要这样做
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();
});
});
如果你读
不鼓励将箭头功能“lambdas”传递给摩卡。由于这个函数的词法绑定,这些函数无法访问Mocha上下文。例如,由于lambdas的性质,以下代码将失败:
如果您不需要使用Mocha的上下文,lambdas应该可以工作。然而,如果最终需要重构,那么重构的结果将更加困难
SetTimeOver到底要完成什么,50000应该完成什么?这将调用50秒后的done返回值。为什么?如果从现在起50秒后调用done,代码将读取setTimeoutdone,50000,如果这是您正在做的,这将有一定的意义,但是调用done的返回值毫无意义;基本上是解决上述问题的两种不同尝试。即使没有setTimeoutdone(50000),超时事件仍会发生;线因此,为了简单起见,请阅读假设setTimeout行不存在的代码。
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);
});
});