サービスを呼び出してオブジェクトを渡すメソッドをテストする方法。
long AddFileDownloadEntry(FileDownloadEntry fde);
何らかのロジックが含まれている場合の単体テストの方法は理解していますが、このサービスはオブジェクトを渡すだけで、オブジェクト内のデータがデータベースに挿入されます。
編集:
よくわかりませんでした。サービスでメソッドをテストしようとしています。
サービスを呼び出してオブジェクトを渡すメソッドをテストする方法。
long AddFileDownloadEntry(FileDownloadEntry fde);
何らかのロジックが含まれている場合の単体テストの方法は理解していますが、このサービスはオブジェクトを渡すだけで、オブジェクト内のデータがデータベースに挿入されます。
編集:
よくわかりませんでした。サービスでメソッドをテストしようとしています。
サービスをモックして、次のことを確認することをお勧めします。
メソッドの役割がサービスを呼び出してオブジェクトを渡すことである場合は、適切なサービス メソッドが呼び出され、適切なオブジェクトが渡されたことを確認する必要があります。
どうやってするか?まず、抽象化 (つまり、サービス インターフェイス) に依存する必要があります。次に、この依存関係をモックし、期待値を設定する必要があります):
FileDownloadEntry fde = // create entry
Mock<IFooService> serviceMock = new Mock<IFooService>();
serviceMock.Setup(s => s.AddFileDownloadEntry(fde)).Returns(someReturnValue);
SUT sut = new SUT(serviceMock.Object); // inject dependency
sut.YourMethod(); // act
serviceMock.VerifyAll();
このサンプルでは、Moqテスト ライブラリを使用します。
ところで、デフォルトでは Moq は渡された引数を参照によって比較します。それらを値で比較したい場合は、Equals
onをオーバーライドFileDownloadEntry
するか、引数を手動で検証する必要があります。
通常、これらの統合ポイントを単体テストすることはできません。メソッド呼び出しをアダプターでラップし、アダプターの使用をテストできますが、実際の呼び出しはテストの対象になりません。それがまさに統合ポイントで行われることです。最終的には、サービスを呼び出したり、データベースと対話したり、ファイル システムを操作したりする必要があります。