使用 Jest 检查字符串是否包含数组中的子字符串之一

Que*_*Del 4 javascript jestjs

expectedStrings = [
'abc',
'def',
'ghi'
]
Run Code Online (Sandbox Code Playgroud)
stringToCheck = 'zyxabc'
Run Code Online (Sandbox Code Playgroud)

我想用 Jest 检查 stringToCheck 是否包含预期字符串之一。我已经看到了 stringContaining 和 arrayContaining 方法,但我不确定应该如何组合才能使测试工作。

我想使用接近这个例子的东西:

describe('stringMatching in arrayContaining', () => {
  const expected = [
    expect.stringMatching(/^Alic/),
    expect.stringMatching(/^[BR]ob/),
  ];
  it('matches even if received contains additional elements', () => {
    expect(['Alicia', 'Roberto', 'Evelina']).toEqual(
      expect.arrayContaining(expected),
    );
  });
  it('does not match if received does not contain expected elements', () => {
    expect(['Roberto', 'Evelina']).not.toEqual(
      expect.arrayContaining(expected),
    );
  });
});
Run Code Online (Sandbox Code Playgroud)

yad*_*ejo 5

我不认为组合 arrayContaining 和 stringContaining 是最好和最易读的方法(如果可能的话)。

相反,只需尝试以下方法:

    const numberOfMatches = expectedStrings.filter(x => stringToCheck.indexOf(x) > -1).length;
    expect(numberOfMatches).toBeGreaterThan(0);
Run Code Online (Sandbox Code Playgroud)