如何断言 webdriverIO 中多个值之一的字符串“toBe”

问题描述 投票:0回答:1

我想要一个灵活的断言来检查字符串是否是多个值之一。

我刚刚开始在 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 中单个断言中的多个值

javascript testing localization webdriver-io
1个回答
0
投票

我已将其实现为自定义匹配器 - 但仍然想知道它是否可以在标准 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])
© www.soinside.com 2019 - 2024. All rights reserved.