我想要一个灵活的断言来检查字符串是否是多个值之一。
我刚刚开始在 BrowserStack 上运行我的 WebdriverIO + Mocha 测试,但他们有美国语言环境的机器,它们渲染日期的方式不同,所以我的测试失败了。 BrowserStack 配置中似乎没有区域设置。
例如
expectDOB_AU = '29/02/2024'
expectDOB_US = '2/29/2024'
await expect(await MyPage.inputDOB.getValue()).toBe([expectDOB_AU, expectDOB_US])
我可以看到
hasText
可以采用数组,但这不适用于从输入值获取的字符串。
我看过这个相关问题webdriverio 中单个断言中的多个值
我已将其实现为自定义匹配器 - 但仍然想知道它是否可以在标准 webdriverio 中实现。
test/cusom/customMatcher.js
expect.extend({
toBeOneOf(actual, expecteds) {
return {pass: expecteds.includes(actual), message: () => `${actual} should be one of ${expecteds}`}
}
})
可选:
test/custom/CustomMatchers.d.ts
// keep the IDE or Typescript happier
declare namespace ExpectWebdriverIO {
interface Matchers<R, T> {
toBeOneOf(actual:string, expecteds: string[]): R
}
}
wdio.conf.js
before: function (capabilities, specs) {
require('./test/custom/cutomMatchers')
},
在测试规范中
await expect(await myPage.inputDOB.getValue()).toBeOneOf([sDOB_AU,sDOB_US])