文字列の特殊文字の正規表現を返す関数をテストしているので、テストではエスケープされた文字列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
と動作させるために追加する必要のあるフィールド/引数はありますか? \*
が\*
以来*
—であることは文字列リテラルで定義されたエスケープシーケンスではなく、*
はリテラル文字列でエスケープする必要がないため、
答えをくれてありがとうございます。私は '*'がエスケープ文字の一部ではないことを認識していますが、それはすべての特殊文字をエスケープする質問の一部です。 – warl0ck
また、 'toBe'と' toEqual'と 'toMatch'の違いを答えに加えてください。 – warl0ck
@ warl0ck:ドキュメントはそれをカバーしています。 –