【发布时间】:2021-10-24 06:07:07
【问题描述】:
这是一个关于 WebdriverIO 和 ES6 JavaScript 承诺的有点高级的问题:
我只是按照 WebdriverIO 上的说明创建项目:
npx wdio TryWDIO
cd TryWDIO
然后我修改了测试文件:
// test/specs/example.e2e.js
describe('Trying it', () => {
it('should have some text', async () => {
await browser.url('https://www.amazon.com');
const elem = await $('body');
await expect(elem).toHaveTextContaining('Best Sellers');
});
});
并使用
运行它npm run wdio
所以测试通过了。
如果我把最后一行改成
await expect(elem).toHaveTextContaining('BBBest Sellers');
测试按预期失败。
但是,当该行更改为:
expect(elem).toHaveTextContaining('BBBest Sellers');
然后测试又通过了。
这是为什么呢?我想不管我们是否await,这个承诺无论如何都应该失败。
实际上它看起来有点脆弱,因为如果程序员忘记在那里等待,测试通过但实际上可能没有通过。但是有人告诉我我们可以有一个 linting 规则来保证它......但是一些爱好者会编写脚本而不是使用 eslint 来防范。
【问题讨论】: