jestでユニットテストを書くとき、レビューで指摘をもらって忘れがちなtoBeとtoEqualについてのメモ。
toBeとtoEqualの使い分け
toEqualを使えばとりあえずテストは通ってしまうが、期待している型に明確に一致する判定をしたほうが良い。
toBe
- https://jestjs.io/ja/docs/expect#tobevalue
- プリミティブ値や、オブジェクトインスタンスの参照IDの確認
- JavaScriptにおけるプリミティブ値とは
- 文字列
- 数値
- BigInt
- 真偽値
- undefined
- シンボル
- JavaScriptにおけるプリミティブ値とは
- ただし、浮動小数点の値に使用すると数値の丸めで正しく動作しないので toBeCloseTo() を使う必要がある。
expect(intValue).toBe(2);
toEqual
- https://jestjs.io/ja/docs/expect#toequalvalue
- オブジェクトのすべてのプロパティを再帰的に等しいかの検証をする
const val = { foo: 1, bar: 'x' }; expect(val).toEqual({foo:1, bar:'x'});