【问题标题】:Check if a string contains 'abc' or 'cde' with jest检查字符串是否包含 'abc' 或 'cde' 并开玩笑
【发布时间】:2023-03-21 07:53:01
【问题描述】:

我想检查一个字符串是否包含 'abc' 或 'cde' 并开玩笑。

const substr1 = 'abc'
const substr2 = 'cde'
const str = 'ooocdeooo'

我正在使用

expect(str).toContain(substr1);

对于一个字符串,但我找不到一种干净的方法来检查 substr1 或 substr2 是否在 str 我怎么能那样做? 谢谢!

【问题讨论】:

  • 你可以试试正则表达式测试expect(/(abc|cde)/i.test(str)).toBe(true)

标签: javascript jestjs


【解决方案1】:

您可以使用带有toMatch 的正则表达式

喜欢:

expect(str).toMatch(/(abc|cde)/i)

【讨论】:

  • 您可以/应该在末尾添加/i 以不区分大小写
【解决方案2】:

我试图匹配一个变量,并且将一个变量插入到正则表达式中(就像在接受的答案中一样)看起来很复杂。相反,我发现了成功:

const tree = renderer.create(<Component {...mockProps} />).toJSON();
const treeString = JSON.stringify(tree);

expect(treeString.includes(mockProps.individualProp)).toBeTruthy();

More info here on .includes().

【讨论】:

    【解决方案3】:

    您可以使用toContain Jest 匹配器 https://jestjs.io/docs/en/expect#tocontainitem

    【讨论】:

    • 这是题主使用的方法。
    • 关于 OP 问题:我相信使用 2x expect(...).toContain(...) - 每个字符串都是可行的方法。或者是否有任何理由通过使用正则表达式来使测试代码更复杂,只是为了让 1 expect 而不是 2?
    【解决方案4】:

    您可能也在寻找类似的产品之一

    expect.stringMatching(/(abc|def)/i)
    expect.stringContaining("abc")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2013-05-18
      • 2019-06-06
      相关资源
      最近更新 更多