我正在测试一个函数,它返回字符串的特殊字符的正则表达式转义版本,因此在测试中我正在测试它是否为equals to
转义字符串,但它失败并说
Expected value to match:
"4**2"
Received:
"4\\*\\*2"
这是我写的测试:
describe("escapeRegExp", () => {
// required for quotes test
test("Escapes all RegExp characters", () => {
expect(escapeRegExp("4**2")).toMatch("4\*\*2");});
其中escapeRegExp
函数返回"4\*\*2"
但它预期为"4**2"
。
但是当我使用
时 expect(escapeRegExp("4**2")).toMatchSnapshot("4\*\*2");
它运作正常。
在使用.toBe
或toEqual()
??
我是否需要添加任何其他字段/参数才能使其与toEqual
或toMatchSnapshot
一起使用才能实现此目的?
答案 0 :(得分:1)
"4\*\*2"
是一个根本不包含反斜杠的字符串4**2
(因为\*
是*
- 因为\*
不是已定义的转义序列字符串文字,*
不需要在字符串文字中转义,\
被忽略)。您的意思是"4\\*\\*2"
,即字符串4\*\*2
。 E.g:
describe("escapeRegExp", () => {
// required for quotes test
test("Escapes all RegExp characters", () => {
expect(escapeRegExp("4**2")).toMatch("4\\*\\*2");});
请注意,您传递的字符串toMatchSnapshot
是可选的快照名称。您不使用toMatchSnapshot
来测试文字值(使用toMatch
)。有关快照测试的更多信息here。