1

サービスを呼び出してオブジェクトを渡すメソッドをテストする方法。

long AddFileDownloadEntry(FileDownloadEntry fde);

何らかのロジックが含まれている場合の単体テストの方法は理解していますが、このサービスはオブジェクトを渡すだけで、オブジェクト内のデータがデータベースに挿入されます。

編集:

よくわかりませんでした。サービスでメソッドをテストしようとしています。

4

3 に答える 3

1

サービスをモックして、次のことを確認することをお勧めします。

  • 期待されるメソッドが期待される回数呼び出される
  • 期待されるメソッドは、期待される引数で呼び出されます。
于 2012-10-30T18:35:58.743 に答える
1

メソッドの役割がサービスを呼び出してオブジェクトを渡すことである場合は、適切なサービス メソッドが呼び出され、適切なオブジェクトが渡されたことを確認する必要があります。

どうやってするか?まず、抽象化 (つまり、サービス インターフェイス) に依存する必要があります。次に、この依存関係をモックし、期待値を設定する必要があります):

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 は渡された引数を参照によって比較します。それらを値で比較したい場合は、EqualsonをオーバーライドFileDownloadEntryするか、引数を手動で検証する必要があります。

于 2012-10-30T18:36:03.900 に答える
1

通常、これらの統合ポイントを単体テストすることはできません。メソッド呼び出しをアダプターでラップし、アダプターの使用をテストできますが、実際の呼び出しはテストの対象になりません。それがまさに統合ポイントで行われることです。最終的には、サービスを呼び出したり、データベースと対話したり、ファイル システムを操作したりする必要があります。

于 2012-10-30T18:36:25.070 に答える