[英]String equality fails while testing with escaping regex special characters
我正在測試一個函數,該函數返回字符串的特殊字符的正則表達式轉義版本,因此在測試中,我正在測試它是否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
一起使用嗎?
"4\\*\\*2"
是完全不包含反斜杠的字符串, 4**2
(因為\\*
是*
—因為\\*
不是字符串文字中定義的轉義序列,並且*
不需要以字符串文字進行轉義,則\\
被忽略)。 您的意思是"4\\\\*\\\\*2"
,它是字符串4\\*\\*2
。 例如:
describe("escapeRegExp", () => {
// required for quotes test
test("Escapes all RegExp characters", () => {
expect(escapeRegExp("4**2")).toMatch("4\\*\\*2");});
請注意,傳遞給toMatchSnapshot
的字符串是可選的快照名稱 。 您不使用toMatchSnapshot
測試文字值(使用toMatch
)。 更多關於快照測試在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.