在Jest中将Regex表达式与toHaveProperty()一起使用

时间:2018-08-28 09:39:18

标签: javascript jestjs

我遇到一个我的Promise拒绝并带有Error对象的情况。

throw new Error(`${ISSUE}`);

ISSUE包含公用字符串is causing this issue。 例如:

ISSUE = 'Node is causing this issue', OR
ISSUE = 'Jest is causing this issue'

要使用Jest测试这种情况,我正在使用toHaveProperty(),就像:

expect(function()).rejects.toHaveProperty('message',/is causing this issue/);

但这给我说错误

Comparing two different types of values. Expected regexp but received string.

在此处指定确切的字符串时,它可以完美工作。使用正则表达式可以进行本轮工作吗?

我已经尝试过了,尽管这似乎可行,但是正在寻找一种更清洁,更简化的方法。

return function()
  .then()
  .catch((e) => {
    expect(e.message).toMatch(/is causing this issue/);
  });

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用toMatchObject

expect(function()).rejects.toMatchObject({
  message: expect.stringMatching(/is causing this issue/)
});

这将允许具有message属性且其值是与给定RegExp匹配的字符串的任何对象。