我正在使用 Angular 5、Protractor 和 Cucumber 进行 e2e 和 bdd 测试。当我在终端上运行时
ng e2e
我收到以下错误:
当我打开页面# e2e\steps\home.steps.ts:15
错误:函数超时,确保承诺在 5000 内解决 毫秒
在第 15 行,我有:
When(/^I open the page$/, async () => {
await browser.get('http://localhost:49156');
});
具体来说就是这行:
When(/^I open the page$/, async () => {
答案很简单。默认情况下,Cucumber 的异步钩子需要 5000 毫秒,但我们可以通过这样做来配置它:
When(/^I open the page$/, {timeout: 2 * 5000}, async () => {
甚至可以进行全局配置。
var {setDefaultTimeout} = require('cucumber');
setDefaultTimeout(60 * 1000);
更多信息:超时
另一件事:我配置了错误的端口。正如你所看到的,我在端口 49156 上配置了它,因为我读到它是默认端口,但似乎已经更改,现在是端口 49152。
添加到 Ricky 的答案中。
When(/^I open the page$/, {timeout: 2 * 5000}, async () => {
await new Promise((resolve) => setTimeout(resolve, 5000)); // wait for 5000 ms
})
黄瓜默认需要 5000 毫秒进行异步调用。我们可以通过下面提到的方式修改它。这应该位于框架中的支持目录下,以便更好地实践。 尝试使用这个:
const { setDefaultTimeout } = require('@cucumber/cucumber');
setDefaultTimeout(parseInt(process.env.DEFAULT_TIMEOUT) || 60000);