私は Prisma と MySQL を使用して NestJS ベースの API を開発しています。私はテスト駆動開発 (TDD) を初めて使用するため、プロジェクトにテストを追加し始めたいと思っています。 UsersService
のテストは正常に作成できましたが、対応する UsersController
をテストする方法がわかりません。また、単体テストと結合テストの違いもよくわかりません。以下に、UsersService
、UsersController
、および私が作成したテストに関連するコード スニペットを示します。
プリズムソリューション:
リーリーUsersService (関連部分):
リーリーUsersController (関連部分):
リーリー具体的な問題:
UsersController
について、テストを記述するための推奨される方法は何ですか? UsersService
用に書かれたテストとどう違うのでしょうか? UsersService
用に作成したテストは単体テストとみなされますか、それとも他の種類のテストとみなされますか?
単体テストを使用すると、各メソッドを個別にテストできます。たとえば、コントローラー メソッドがサービスのメソッドを呼び出して返す場合、コントローラー メソッドがサービスのメソッドを呼び出すかどうかを単体テストでテストする必要があります。
統合テストはコード全体のテストに重点が置かれており、通常はモック オブジェクトを使用せず、実際のデータベースなどを使用してアプリケーションのフロー全体をテストしようとします。たとえば、ログインとログアウト、登録とプロファイルの作成などのユーザー ストーリーをテストできます。
個人的に、TDD を使用するときは、最初に単体テストを作成します。必要に応じて、後で統合テストを作成します。