我遇到一个我的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/);
});
谢谢!
答案 0 :(得分:1)
您可以使用toMatchObject
:
expect(function()).rejects.toMatchObject({
message: expect.stringMatching(/is causing this issue/)
});
这将允许具有message
属性且其值是与给定RegExp匹配的字符串的任何对象。