我正在注入依赖项CheckCompatibRepository
。我正在嘲笑一个方法IsCompatible
,它有一个列表作为第三个参数。
var mockRepositoryCheckCompatib = new Mock<ICheckCompatibilityActDoer>();
mockRepositoryCheckCompatib.Setup(c => c.IsCompatible(doer, activity, listActivitiesPreDispatched)).Returns(true);
问题在于清单。它由我正在测试的类填充。诚实地说,我不关心那个参数,我想模仿IsCompatible
忽略那个参数。那可能吗?
否则,模拟只是不会捕获方法调用。为了简化问题,我尝试将列表作为注入依赖项发送到我的班级。它一直有效,直到列表开始填充,然后模拟停止捕获调用。
你会怎么嘲笑这个?
答案 0 :(得分:11)
由于您使用的是Moq,因此您正在寻找It.IsAny<T>
方法。由于您正在更改列表的值,因此传递对象实例不是正确的方法,因为您必须不断设置Mock来处理新参数。
以下示例将允许mock接受List<T>
类型的任何参数值。为了这个例子,我们将使用List<int>
。
var mockRepositoryCheckCompatib = new Mock<ICheckCompatibilityActDoer>();
mockRepositoryCheckCompatib.Setup(c => c.IsCompatible(doer, activity, It.IsAny<List<int>>())).Returns(true);
编辑:我没有看到bzlm之前的评论,这基本上回答了这个问题。如果他发布了一个,请接受他的回答,我不是故意要偷走它。