ユニットテストの経験があまりないため、最初に学習するいくつかのルールを収集しようとしています。
遭遇したことのない問題の「ルール」を注意深く学習してください。「ルール」または「ベストプラクティス」に出くわした場合、このルールが使用される「想定」の場所の簡単なおもちゃの例を見つけ、「ルール」が言っていることを無視して自分でその問題を解決しようとすることをお勧めします。
この場合、2つまたは3つの単純なクラスと、それらが実装すべきいくつかの動作を考え出すことができます。自然に感じる方法でクラスを実装し、各動作の単体テストを作成します。発生した問題のリストを作成します。たとえば、一方向に機能することから始めた場合、後で戻って変更する必要がありました。物事がどのように組み合わされるべきかについて混乱した場合; 定型文の作成に悩まされた場合; 等
次に、「ルール」に従って同じ問題を解決してください。繰り返しますが、発生した問題のリストを作成します。リストを比較し、ルールに従うときはどの状況が良いのか、そうではないのかを考えます。
あなたの実際の質問に関しては、「コアロジック」と「サービス」を区別するポートとアダプターのアプローチを好む傾向があります(これは純粋な関数と効果的な手順を区別することに似ています)。
コアロジックとは、問題の領域に基づいて、アプリケーションの「内部」で計算することです。それはのようなクラスが含まれている場合がありますUser
、Document
、Order
、Invoice
コアクラスを呼び出す持っている、などのそれの罰金をnew
彼らだ「内部」実装の詳細以来、他のコアクラスのために。たとえば、をOrder
作成するInvoice
と、Document
を作成し、注文したものの詳細を作成することもできます。これらはテストしたい実際のものなので、テスト中にこれらをモックする必要はありません!
ポートとアダプターは、コアロジックが外界と相互作用する方法です。物事が好きな場所ですDatabase
、ConfigFile
、EmailSender
、などに住んでいます。これらはテストを困難にするものなので、これらをコアロジックの外部で作成し、必要に応じて(依存性注入またはメソッド引数などとして)渡すことをお勧めします。
これにより、データベース、ファイル、電子メールなどを気にすることなく、コアロジック(重要なビジネスロジックが存在し、最も解約されるアプリケーション固有の部分)を単独でテストできます。いくつかのサンプル値を渡すだけで、正しい出力値が得られることを確認できます。
ポートとアダプターは、データベース、ファイルシステムなどのモックを使用して、ビジネスロジックを気にせずに個別にテストできます。いくつかのサンプル値を渡すだけで、それらが保存/読み取り/送信/などされていることを確認できます。適切に。