首页 > 解决方案 > 单元测试 - 确保所有存储库都通过构造函数

问题描述

我想创建一个单元测试方法来确保所有存储库都通过构造函数传递。

我相信在这里使用 Moq 存储库可能是最好的解决方案,但到目前为止我还无法验证测试方法是否通过。

控制器:

public AgentsController(ICallBoardStatsRepo callBoardRepo)
{
    _callBoardRepo = callBoardRepo;
}

界面:

public interface ICallBoardStatsRepo:IDisposable
{
    CallBoardStats ById(int clientId);
    ClientCalls ByIdNavStats(int clientId);
}

我当前对存储库构造函数的测试方法如下所示:

[TestMethod]
public void AgentController_Test()
{
    var myCallBoard = new Mock<AgentCallStats>();
    var myTestCallBoard = new Mock<AgentCallStats>();

    var callBoardList = new List<AgentCallStats>() { myCallBoard.Object, myTestCallBoard.Object };
    var ICallBoard = new Mock<IAgentCallStatsRepo>();
    ICallBoard.Setup(x => x.ById(2)).Returns(callBoardList);

    myCallBoard.Verify(x => x.Equals(It.IsAny<int>()), Times.Once());
    myTestCallBoard.Verify(x => x.Equals(It.IsAny<int>()), Times.Once());
 }

运行单个测试方法时,我收到如下错误:

预期在模拟上调用一次,但为 0 次

我在编写单元测试方面不是很有经验,这真的让我陷入了困境。有人愿意帮助我指出正确的方向吗?我觉得我已经接近解决这个问题了,但也许多一双眼睛就能突出这个问题。谢谢你。

标签: c#unit-testingmoq

解决方案


推荐阅读