[解決済み] Jestの「toBe」と「toEqual」の違いは何ですか?
2022-08-20 15:56:22
質問
Jestのドキュメントを読みます。
toBeは、値が期待通りのものであるかどうかをチェックするだけです。厳密な等価性をチェックするために===を使用します。
そして
toEqual
:
2つのオブジェクトが同じ値を持っていることを確認したい場合は、.toEqualを使用します。このマッチャーは、オブジェクトの同一性をチェックするのではなく、すべてのフィールドの等しさを再帰的にチェックします。例えば、このテストスイートでは toEqual と toBe は異なる振る舞いをするので、すべてのテストがパスします。
const x = { a: { b: 3 } };
const y = { a: { b: 3 } };
expect(x).toEqual(y);
expect(x).toBe(y);
この場合
toEqual
は通るが
toBe
は失敗します。私は、以下のことを理解しています。
toEqual
が通るのは
深いイコール
をチェックするからです。なぜ
toBe
はこの場合失敗するのでしょうか?
また
toBe
と
toEqual
(を使うことができますか?(Jestだけでなく、他のテストフレームワークでも)?
どのように解決するのですか?
失敗の原因
x
と
y
のように、異なるインスタンスであり、同じではありません。
(x === y) === false
. あなたは
toBe
は、文字列、数値、ブーリアンなどのプリミティブなものに対して使用します。
toEqual
. 例えば
x = 4
y = 4
x === y // true
x = 'someString'
y = 'someString'
x === y // true
空っぽのオブジェクトも等しくありません
x = {}
y = {}
x === y //false
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン