私は思うに、検索タイプが作成され、サービスレイヤーとドメインタイプのリストが返されるリポジトリに渡されるかなり単純な設定です。検索タイプは、リポジトリメソッドで式ツリーを構築するだけで、基本的にデータベースからの結果が返されます。非常にシンプルモックのコールバックとリターンのどちらを使うのですか?
リポジトリインタフェース:
public interface IDoNotSolicitRepo
{
IList<DNSContract> SelectWithCriteria(DNS_Search searchriteria);
}
リポジトリの実装サービス:
public class DoNotSolicitService : BaseBLLService, IDoNotSolicitService
{
private readonly IDoNotSolicitRepo repo;
private readonly IPartnerService partnerService;
private readonly IDoNotSolicitReasonService dnsReasonSvc;
public DoNotSolicitService(IDoNotSolicitRepo _repo, IPartnerService _partnerSvc, IDoNotSolicitReasonService _dnsReasonSvc)
{
repo = _repo;
partnerService = _partnerSvc;
dnsReasonSvc = _dnsReasonSvc;
}
public ServiceResult<DNSContract> SelectWithCriteria(DNS_Search searchriteria)
{
var results = repo.SelectWithCriteria(searchriteria);
return ReturnServiceResult(results);
}
}
を、私はこのプロジェクトで部品番号を学習に取り組んでいると私は「場合、私は把握することはできませんCallback()またはReturn()を使用するはずです。私は両方の全体的なポイントを取得しますが、どちらも私にとってこの時点では適切に動作していないようです。
テスト:
[Test]
public void SelectWithCriteria_FirstName()
{
mockRepository.Setup(mr => mr.SelectWithCriteria(It.IsAny<DNS_Search>()))
.Returns((IList<DNSContract> records) => new List<DNSContract>
{
new DNSContract {FirstName = "unit", LastName = "test"},
new DNSContract {FirstName = "moq", LastName = "setup"}
});
dnsSvc = new DoNotSolicitService(mockRepository.Object, new PartnerServiceStub(), new DoNotSoicitReasonServiceStub());
var result = dnsSvc.SelectWithCriteria(new DNS_Search { FirstName = "unit" });
Assert.IsNotNull(result);
Assert.IsTrue(result.Data.Any());
}
エラー:今
System.ArgumentException was unhandled by user code
Message=Object of type 'EP.Rest.Common.RestHelpers.DNS_Search' cannot be converted to type 'System.Collections.Generic.IList`1[EP.Rest.Domain.Contracts.DNSContract]'.
、私は戻り値()メソッドは、渡された型を返すので、私はそれが原因だ見ることができることを読みましたそのエラー。しかし現実世界では、私は異なったタイプが返されたかったのです。私はコールバックデリゲートを作成しようとしましたが、どれも正しいとは感じませんでした。
、多分私はスタブVに違反してきました。偽V。モック責任私が何をしたいが、私は、コールバックまたはReturnにまだあいまいです。 – BryanGrimes
[この質問](http://stackoverflow.com/questions/2833162/moq-callback-can-you-help-to-understand-it)の受諾された回答を確認してください。 Moqのドキュメンテーションにもリンクしています。 –
@BryanGrimes、引用された質問にコールバックの例を掲載しましたが、おそらくこれが役に立ちます。 –