Open1

バックエンドテストメモ

kodekode

2024/11/03

レイヤードアーキテクチャにより、疎結合のクラスや関数を用意することで、それ単体でのテストを書きやすくなる。

テスト対象のクラスや関数の引数をモック化し、テストを記載する。

Partial型(ある型情報を参考にしつつ、undefinedを許容する型)を使用することで、特にDIに関して記述が減り、テストコード記載が容易になる。
→ as(型アサーション)で擬似的に型エラーをなくして楽する


単体テスト
関数やクラスの振る舞いをテストすることができたが、
DI部分はあくまでモックであり、前後のデータの流れを正しくテスト出来ている訳ではなく、
インターフェース間の実装ミスを発見しずらい、という弱点を持つ。

結合テスト
実装コストや準備に時間がかかる反面、単体テストの弱点を補うことができるテスト。
複数のクラスやコンポーネントの機能を統合してテストできる。

expressで結合テストを行うには、jestに加えsupertestというライブラリを使う

結合テストを実施する際の注意点としては、createAppの処理とapp.listenの処理を分離すること。結合テストでapp.listenを実行すると永遠に新しいオブジェクトが立ち上がってしまい、テストが終わらないため。


感想

テストケースを作成するのと、テストを実装するのと、それらと同じくらいテスト結果が偏らないようにモックデータ用意するの大事だなと。