テスト

Laravel

【Laravel】AI呼び出しをテストでモックする(Http::fakeパターン)

こんにちは、かつコーチです。LLM連携機能を実装したら、当然テストも書きたくなります。ただし、テストのたびに実際のAI APIを叩いていると、実行するたびに課金が発生してしまいます。今回はHttp::fake()を使って、AI API呼び出...
Flask

【Flask】pytestでFlaskアプリの単体テストを書く

こんにちは、かつコーチです。ルーティング・データベース・ログイン機能と実装が進んでくると、「コードを直しても、他の部分が壊れていないか」を毎回手動で確認するのが大変になってきます。この記事では、Pythonの定番テストツールpytestを使...
Java

【Spring Boot】Mockitoを使ったサービス層のテスト

こんにちは、かつコーチです。@SpringBootTestや@DataJpaTestは便利ですが、サービス層のビジネスロジックだけを検証したいときにDIコンテナやDBを毎回起動するのは、テストの速度と焦点の両面で無駄が出やすいです。筆者が担...
Java

【Spring Boot】@DataJpaTestでリポジトリのテストを書く

こんにちは、かつコーチです。@Queryでカスタムクエリを書いたとき、「このJPQLは本当に意図通りのデータを取ってきているか」を確認したくなったことはありませんか。筆者はクエリメソッドの命名を間違えて、意図と違う条件でデータを取得してしま...
Java

【Spring Boot】@WebMvcTestでコントローラのテストを書く

こんにちは、かつコーチです。前回の記事で、@SpringBootTestはDIコンテナ全体を起動するため、テストの数が増えると実行が遅くなるという話をしました。コントローラのリクエスト処理だけを確認したいときは、必要な部分だけを起動する@W...
Java

【Spring Boot】Spring Boot Testの基本

こんにちは、かつコーチです。DIやJPAを使ってCRUDまで作れるようになると、次にぶつかる壁が「テストの書き方が分からない」という悩みです。筆者もJava基礎編で単体テストの書き方は学んだものの、Spring Bootのアプリケーションを...
Java

【Java】JUnit5のパラメータ化テストを中級者向けに解説

こんにちは、かつコーチです。「同じロジックを、入力値だけ変えて何パターンもテストしたい」というとき、@Testメソッドをコピペして値だけ変えていませんか。今回はJUnit5のパラメータ化テスト(同じテストロジックを異なる入力値で繰り返し実行...
Java

【Java】Mockitoでモックを使う方法を中級者向けに解説

こんにちは、かつコーチです。外部APIやデータベースに依存するクラスをテストしようとして、テスト環境の準備だけで疲れてしまった経験はありませんか。今回はJavaのテストで広く使われるMockito(依存クラスの動きを偽物(モック)に差し替え...
Java

【Java】JUnitのアサーションの書き方を初心者向けに解説

こんにちは、かつコーチです。前回はJUnit5の基本を解説しましたが、テストの心臓部といえるのが「期待した結果と実際の結果を比較する」処理です。今回はJUnit5でこの比較を行うアサーション(テストの期待値と実際の値を照合し、一致しなければ...
Java

【Java】JUnit5の基本を初心者向けに解説

こんにちは、かつコーチです。コードを書くたびにmainメソッドから動作確認して、確認が終わったらコードを消す……という作業を繰り返していませんか。今回はJavaの標準的なテストフレームワークであるJUnit5(Javaのコードが正しく動くか...
JavaScript

【React】E2Eテスト入門:Playwrightでブラウザ操作を自動化する

こんにちは、かつコーチです。前回は「コンポーネントのユニットテストを書く」というテーマで、個々のコンポーネントを切り離してテストする方法を解説しました。今回はテスト編の締めくくりとして、実際のブラウザを操作しながらアプリ全体の動きを検証する...
JavaScript

【React】コンポーネントのユニットテストを書く

こんにちは、かつコーチです。前回は、React Testing Library(RTL)の基本的な使い方として、コンポーネントの描画結果を検証する方法を解説しました。今回はいよいよ、クリックや入力といったユーザー操作を伴うコンポーネントのユ...
JavaScript

【React】React Testing Library入門

こんにちは、かつコーチです。前回は、テストフレームワークJestの基本文法と環境構築を解説しました。sumのような単純な関数のテストはできるようになりましたが、Reactのコンポーネントは「画面に何が表示されるか」「ボタンを押したらどう変化...
JavaScript

【React】Jestの基本:Reactでテストを書く準備

こんにちは、かつコーチです。前回までは認証・セキュリティ編として、Protected RouteやXSS対策を扱ってきました。安全なアプリが作れるようになったら、次に意識したいのが「そのコードが本当に正しく動いているか」を保証する仕組みです...
Django

【Django】pytest-djangoでテストをもっと書きやすくする

こんにちは、かつコーチです。前回は標準のTestCaseによるテストの書き方を扱いました。TestCaseはDjangoに標準で組み込まれている分、追加のライブラリなしで始められるのが魅力です。一方で、テストの規模が大きくなってくると、クラ...
Django

【Django】Django TestCaseでモデル・ビューのテストを書く

こんにちは、かつコーチです。「動くには動いているけど、テストは書いたことがない」というDjango学習者は少なくありません。筆者自身も最初の頃は、機能を作っては手動でブラウザを操作して確認する、という進め方をしていました。しかしアプリが大き...
Laravel

【Laravel】Laravelアプリを本番環境にデプロイする流れ

こんにちは、かつコーチです。前回は、GitHub Actionsでテストを自動化するCIの仕組みを解説しました。テストが安心して通せるようになったら、次はいよいよ「本番環境にアプリを届ける」というステップに進みます。ここから数回にわたって、...
Laravel

【Laravel】GitHub ActionsでLaravelのテストをCI連携する

こんにちは、かつコーチです。前回まで、FactoryとRefreshDatabaseを使ってテストデータを整える方法を解説してきました。ローカル環境で php artisan test を実行すれば、テストが通るかどうかは確認できます。です...
Laravel

【Laravel】FactoryとRefreshDatabaseでテストデータを整える

こんにちは、かつコーチです。前回はUnit Testで、DBに依存しない単体ロジックのテスト方法を解説しました。今回は、DBを使うテストを書くうえで欠かせない「Factory」と「RefreshDatabase」を解説します。これでテスト編...
Laravel

【Laravel】Unit Testでモデル・サービスクラスをテストする

こんにちは、かつコーチです。前回はFeature Testで、コントローラを含めた機能全体の動作を検証する方法を解説しました。今回は、モデルやサービスクラスといった「単体のロジック」を検証するUnit Testを解説します。Unit Tes...