Ste*_*orn 7 unit-testing moq mocking
我试图测试以下代码
public void CleanUp()
{
List<ITask> tasks = _cleanupTaskFactory.GetTasks();
//Make sure each task has the task.Execute() method called on them
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我创建了一个模拟的_cleanupTaskFactory实现,我希望将GetTasks()方法存根以返回一个类型:
List<Mock<ITask>>
Run Code Online (Sandbox Code Playgroud)
...但编译器不会接受它作为返回值.
我的目标是确保返回的每个任务都使用Verify()MoQ方法调用.Execute()方法.
我怎么断言每个任务都被执行了?
Kla*_*sen 11
在你的_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());
Run Code Online (Sandbox Code Playgroud)
现在确保保留对mocks列表的引用,当你完成测试时,你遍历所有的模拟并调用Verify()如下:
mocks.ForEach(m => m.Verify());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5250 次 |
| 最近记录: |