Javaで学ぶテストコードの書き方(単体・結合・E2Eの違いと注意点)
導入 本記事ではテストコードについて解説しますが、以下の記事を事前に読んでおくと、よりスムーズに理解できます。 単体テスト コントローラーやビジネスロジックなど、特定の層単体の動作を検証するテス...
99 search resultsShowing 1~20 results
You need to log-in
導入 本記事ではテストコードについて解説しますが、以下の記事を事前に読んでおくと、よりスムーズに理解できます。 単体テスト コントローラーやビジネスロジックなど、特定の層単体の動作を検証するテス...
概要 Spring Securityの環境でAPIを叩くと、未認証のリクエストでも 403 Forbidden が返ります。 本来は401を返したいケースでも403になるため、そのままではステー...
導入 Springで開発していると、@Service などのアノテーションを付け忘れてエラーになることがあります。 「エラーが出たら付ける」という対応になりがちですが、なぜ必要なのかはあまり意識...
Recordとは recordは、Javaでデータ保持用のクラスを簡潔に定義するための仕組みです。 public record User( @NotBlank String name, @Not...
@Transactionalとは @Transactionalは、複数のDB操作を1つのトランザクションとして実行するためのアノテーションです。 処理が正常に終了すればコミットされ、途中で例外が...
責務を分けない場合に起きやすい問題 ControllerとServiceの責務を分けずに実装すると、Controllerが業務処理を持ち始めると、責務が混ざりやすくなります。。 例えば、以下のよ...
導入 本記事では、PlaywrightをDocker上で実行する構成を紹介します。 開発環境をDockerで統一している前提で進めます。 本記事の例では、TypeScript + React(V...
全体像 Spring BootにOpenAPIを導入 Swaggerへのアクセスを許可 本番環境では無効化 Swagger UIを確認 フロントエンドで型生成 package.jsonにスクリプ...
protectedの空コンストラクタは、なぜJPAに必要なのか JPAのエンティティには、引数のないコンストラクタが必要です。 @Entity public class User { @Id p...
全体像 CSRFトークン取得(初回アクセス) Cookieに保存される リクエスト時にCookieから取得 ヘッダーに付与して送信 1. CSRFトークンを取得する App.tsx functi...
クエリメソッドとは Spring Data JPAでは、Repositoryに定義したメソッド名からクエリを自動生成できます。 Optional<User> findByEmail(...
依存関係とは 依存関係とは、あるクラスが単体では動作せず、他のクラスに処理を任せている状態を指します。 例えば、注文処理を行うクラスが決済処理を別のクラスに委ねている場合、そのクラスは決済クラス...
JPAのダーティチェックとは JPAには、Entityの変更を自動で検知する「ダーティチェック(Dirty Checking)」という仕組みがあります。 ※ ダーティチェックによる自動更新を利用...
セッションCookie認証のログイン処理の構成 AuthController.java @PostMapping("/signin") public ResponseEntity<?>...
Prettierとは Prettierは、コードの見た目(インデント・改行・クォーテーションなど)を自動で整えてくれるフォーマッターです。 人によってバラつきが出やすいコードスタイルを統一し、可...
問題 バックエンド単体でのテストでは問題なく動作していたにもかかわらず、フロントエンドと接続してブラウザ経由でリクエストを送ると、常に403 Forbiddenが返るようになりました。 原因の調...
テストの流れ 単体テスト(Unit Test) ├ サービス層テスト(Service Test) └ コントローラーテスト(Controller Test) 結合テスト(Integration ...
コンテナはどこで動くのか? コンテナは単体で動くものではありません。 本質は「隔離されたプロセス」であり、必ずOSの上で実行されます。 つまり、コンテナを動かすには 実行基盤となるマシン(物理 ...
Web認証の基本構造(ステートフル vs ステートレス) Webアプリの認証は大きく「ステートフル」と「ステートレス」に分かれます。 セッションはサーバー側で認証状態を管理するステートフル方式、...
全体フロー フロントエンドで常時ポーリングを行う バックエンドは高頻度アクセスを前提とした API を提供する インフラは高頻度アクセスを前提とした設定を行う Chrome DevTools の...
99 search resultsShowing 1~20 results
Qiita is a knowledge sharing service for engineers.