用玩笑检查字符串是否包含 'abc' 或 'cde'

Que*_*Del 18 javascript jestjs

我想用玩笑检查字符串是否包含“abc”或“cde”。

const substr1 = 'abc'
const substr2 = 'cde'
const str = 'ooocdeooo'
Run Code Online (Sandbox Code Playgroud)

我在用

expect(str).toContain(substr1);
Run Code Online (Sandbox Code Playgroud)

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

R3t*_*tep 27

您可以使用正则表达式 toMatch

喜欢 :

expect(str).toMatch(/(abc|cde)/i)
Run Code Online (Sandbox Code Playgroud)

  • 您可以/应该在末尾添加“/i”以不区分大小写 (3认同)

Mar*_*röm 19

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

expect.stringMatching(/(abc|def)/i)
expect.stringContaining("abc")
Run Code Online (Sandbox Code Playgroud)


Mik*_*ski 11

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

在此处输入图片说明

  • 这是问题作者使用的方法。 (3认同)
  • 关于OP问题:我相信对每个字符串使用2x `expect(...).toContain(...)` - 是正确的方法。或者是否有任何理由通过使用正则表达式来使测试代码变得更加复杂,只使用 1 个“expect”而不是 2 个? (3认同)

Orc*_*his 6

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

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

expect(treeString.includes(mockProps.individualProp)).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)

更多信息请参见 .includes()