Open9
Jest の基本: Jest で Unit Testを作成する
ピン留めされたアイテム
Jest 操作チートシート🌟
Jestのexpect(matcher)を完全に理解する🌟
Jestとは?
Jest で Unit Testを作成するハンズオン
Jest Docs
- Jest Docs がわかりやすい🌟
Globals
Expect
Configuring Jest
JestをES6化してimport/exportを使う方法
JestでReactアプリをテストする
Jest ✖️ TypeScript
JestのbeforeAll と beforeEachの違いについて
- beforeAll: 最初に1回実行される、その後に各
it
の処理が走る - beforeEach: 配下の
it
の直前に毎回実行される
Jestでの曖昧な比較 (expect.arrayContaining, expect.objectContaining など)
expect.objectContaining
は、Jestの非対称マッチャーの一つで、オブジェクトが特定のプロパティとその値を含んでいるかを検証する際に使用します。
これにより、オブジェクト全体を比較することなく、部分的な一致を確認できます。
使用例:
const received = {
id: 1,
name: 'Taro',
age: 30,
};
expect(received).toEqual(
expect.objectContaining({
id: 1,
name: 'Taro',
})
);
上記の例では、received
オブジェクトがid
プロパティに1
、name
プロパティにTaro
を持つことを確認しています。age
プロパティの有無や値は検証対象外となります。
主な特徴:
- 部分一致の検証: オブジェクト全体ではなく、特定のプロパティとその値の存在を確認できます。
- 柔軟なテスト: 動的に変化するプロパティを無視し、重要な部分のみを検証する際に有用です。
詳細な情報や他の非対称マッチャーについては、Jestの公式ドキュメントをご参照ください。
参考・引用
Error Throw 評価について
Error Throw 評価で、次のような実装が効率的である。
it("xxxxxFuncが失敗した場合、エラーを返すこと", async () => {
jest.spyOn(TestUtils, "xxxxxFunc").mockRejectedValue(new Error(""));
const req = new xxxxxReq(
xxxxx.xxxxxId,
);
await expect(service.xxxxxFunc(req)).rejects.toThrowError(
expect.objectContaining({
message: ErrorCode.XXXXX_XXXXX,
status: 500,
}),
);
});
処理ポイント:
-
関数呼び出しの回数を削減:
service.xxxxxFunc
の呼び出しを一度だけにして、コードの効率性を向上させました。 -
エラーアサーションの簡素化:
toThrowError
にexpect.objectContaining
を使用し、エラーオブジェクトの特定のプロパティをアサートしています。これにより、エラーの型とプロパティを一度に確認できます。