我认为,这是一个非常直接的设置,其中创建搜索类型并将其传递到服务层并进入存储库,其中返回域类型的列表.搜索类型除了在存储库方法中构造表达式树之外什么都不做,基本上数据库的结果会返回.很简单
存储库界面:
public interface IDoNotSolicitRepo
{
IList<DNSContract> SelectWithCriteria(DNS_Search searchriteria);
}
Run Code Online (Sandbox Code Playgroud)
实现存储库的服务:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在努力学习这个项目的Moq,我无法弄清楚我是否应该使用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 …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 Moq 库进行单元测试。Moq 使我能够在模拟对象上的方法调用之前和之后注册回调,如下所示:
Mock<IMyClass> mock = new Mock<IMyClass>();
mock.Setup(o => o.MyMethod())
.Callback(() => Console.WriteLine("BEFORE!"))
.Returns(true)
.Callback(() => Console.WriteLine("AFTER!"));
Run Code Online (Sandbox Code Playgroud)
但是,如果MyMethod不返回值(即它有一个void返回类型),那么我只能像这样设置一个回调:
mock.Setup(o => o.MyMethod())
.Callback(() => Console.WriteLine("BEFORE!"));
Run Code Online (Sandbox Code Playgroud)
如代码中所述,此回调在调用方法之前发生。似乎没有任何其他选项可以在调用方法后指定第二个回调。
这可能吗?文档中似乎没有关于它的任何内容。我错过了什么吗?