gpt4 book ai didi

c# - 用参数模拟一个方法

转载 作者:太空狗 更新时间:2023-10-30 00:15:59 25 4
gpt4 key购买 nike

我正在注入(inject)依赖项 CheckCompatibRepository。我正在模拟一个方法 IsCompatible,它有一个列表作为第三个参数。

 var mockRepositoryCheckCompatib = new Mock<ICheckCompatibilityActDoer>();
mockRepositoryCheckCompatib.Setup(c => c.IsCompatible(doer, activity, listActivitiesPreDispatched)).Returns(true);

问题是列表。它由我正在测试的类填充。老实说,我不关心那个参数,我想模拟 IsCompatible 忽略那个参数。那可能吗?

否则,模拟将无法捕获方法调用。为了缓解问题,我尝试将列表作为注入(inject)的依赖项发送到我的类(class)中。它一直工作到列表开始被填充,然后模拟停止捕捉调用。

你会如何 mock 这个?

最佳答案

由于您使用的是 Moq ,您正在寻找 It.IsAny<T>方法。由于您正在更改列表的值,因此将对象实例传递给它不是正确的方法,因为您必须不断设置 Mock 来处理新参数。

以下示例将允许模拟接受类型为 List<T> 的任何参数值.为了这个例子,我们将使用 List<int> .

 var mockRepositoryCheckCompatib = new Mock<ICheckCompatibilityActDoer>();
mockRepositoryCheckCompatib.Setup(c => c.IsCompatible(doer, activity, It.IsAny<List<int>>())).Returns(true);

编辑:我之前没有看到 bzlm 的评论,它基本上回答了这个问题。如果他发帖请采纳他的回答,我不是故意挖的。

关于c# - 用参数模拟一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9930526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com