March 2025
Intermediate to advanced
304 pages
4h 33m
Japanese
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
サービス・レイヤーを導入することで、実用的なアプリケーションに必要なオーケストレーションの責務を追加することができる。 サービス・レイヤーは、ユースケースとそれぞれのワークフローを明確に定義するのに役立つ。リポジトリから何を取得する必要があるのか、どのような事前チェックと現状検証を行うべきなのか、そして最後に何を保存するのか。
しかし現状では、単体テストの多くはより低いレベルで動作し、モデルに直接作用している。 この章では、これらのテストをサービスレイヤレベルに移行する際のトレードオフと、より一般的なテストのガイドラインについて説明する。
サービスレイヤーを使用し、独自のサービスレイヤーテストを持つようになったことで、 のテストピラミッドにどのような影響があるか見てみよう:
テストの種類をカウントする
$ grep -c test_ test_*.py
tests/unit/test_allocate.py:4
tests/unit/test_batches.py:8
tests/unit/test_services.py:3
tests/integration/test_orm.py:6
tests/integration/test_repository.py:2
tests/e2e/test_api.py:2悪くない!単体テストが15個、統合テストが8個、エンドツーエンドテストが2個だけだ。 これはすでに健全なテストピラミッドだ。
これをさらに一歩進めるとどうなるか見てみよう。サービスレイヤーに対してソフトウェアをテストできるようになったので、ドメインモデルに対するテストは必要なくなった。その代わりに、第1章のドメインレベルのテストをすべてサービスレイヤーの観点で書き直すことができる:
サービスレイヤーでドメインテストを書き直す (tests/unit/test_services.py)
# domain-layer test:deftest_prefers_current_stock_batches_to_shipments():in_stock_batch=Batch("in-stock-batch","RETRO-CLOCK",100,eta=None)shipment_batch=Batch ...
Read now
Unlock full access