我有,我認爲,是一個非常簡單的設置,其中創建一個搜索類型,並通過服務層並傳遞到一個存儲庫,其中返回一個域類型的列表。搜索類型只會在存儲庫方法中構建表達式樹,基本上數據庫的結果會回來。很簡單何時使用Mock的回撥與回報?
的倉庫接口:
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);
}
}
我工作的這個項目的學習起訂量,我無法弄清楚,如果我m應該使用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]'.
現在,我讀過的收益()方法返回傳入的類型,所以我可以看到這是原因那個錯誤。但在現實世界中,我希望返回不同的類型。我試圖創建一個回調委託,但沒有一個感覺是正確的。
在看這個,也許我已經違反了存根訴假訴模擬職責時,我想,但我仍然在回調或返回模糊。 – BryanGrimes 2012-01-12 20:46:32
查看[這個問題]的接受答案(http://stackoverflow.com/questions/2833162/moq-callback-can-you-help-to-understand-it),應該給你一個不錯的主意。他還鏈接到Moq的文檔,解釋它有點進一步。 – 2012-01-12 20:57:10
@BryanGrimes,我發佈了一個回調示例引用的問題,也許這會有所幫助。 – 2012-02-29 21:16:21