簡體   English   中英

使用轉義正則表達式特殊字符進行測試時,字符串相等性失敗

[英]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"); 它工作正常。

知道為什么在使用.toBetoEqual()檢查時失敗了嗎?

我還必須添加其他字段/參數以使其與toEqualtoMatchSnapshot一起使用嗎?

"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM