相关疑难解决方法(0)

何时使用模拟回调与回归?

我认为,这是一个非常直接的设置,其中创建搜索类型并将其传递到服务层并进入存储库,其中返回域类型的列表.搜索类型除了在存储库方法中构造表达式树之外什么都不做,基本上数据库的结果会返回.很简单

存储库界面:

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)

c# unit-testing moq

5
推荐指数
1
解决办法
7536
查看次数

Moq:在不返回值的方法上调用方法后的回调

我目前正在使用 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)

如代码中所述,此回调在调用方法之前发生。似乎没有任何其他选项可以调用方法指定第二个回调。

这可能吗?文档中似乎没有关于它的任何内容。我错过了什么吗?

c# unit-testing moq

4
推荐指数
1
解决办法
3941
查看次数

标签 统计

c# ×2

moq ×2

unit-testing ×2