模拟对象返回带有 Moq 的模拟列表

2024-03-29

我正在尝试测试以下代码

    public void CleanUp()
    {
        List<ITask> tasks = _cleanupTaskFactory.GetTasks();

        //Make sure each task has the task.Execute() method called on them
    }

在我的测试中,我创建了 _cleanupTaskFactory 的模拟实现,并且我想对 GetTasks() 方法进行存根以返回类型:

List<Mock<ITask>>

...但编译器不会接受它作为返回值。

我的目标是确保返回的每个任务都使用Verify() MoQ 方法调用.Execute() 方法。

我如何断言每个任务都已执行?


In your _cleanUpTaskFactory模拟你可以简单地执行如下操作:

var mocks = new List<Mock<ITask>>();
for(var i = 0; i < 10; i++){
    var mock = new Mock<ITask>();
    mock.Setup(t => t.Execute()).Verifiable();
    mocks.Add(mock);
}

_cleanUpTaskFactoryMock.Setup(f => f.GetTasks()).Returns(mocks.Select(m => m.Object).Tolist());

现在请确保保留对mocks列表,当你完成测试后,你会迭代所有的模拟并调用Verify()像这样:

mocks.ForEach(m => m.Verify());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟对象返回带有 Moq 的模拟列表 的相关文章

随机推荐