c# - 如何在没有默认构造函数的情况下模拟对象上的方法?

标签 c# moq

使用最小起订量,如果我尝试直接在 Foo 上模拟方法,我会得到:Invalid verify on a non-virtual (overridable in VB) member.

我的替代方案是模拟 IFoo,它摆脱了上述问题,但是我无法构造它,因为 Foo 没有无参数构造函数(不能为接口(interface)模拟传递构造函数参数。)。我能做什么?

最佳答案

您应该能够毫无问题地模拟 IFoo,并且在模拟接口(interface)时没有理由传递参数。您的 IFoo 模拟将完全是那个(模拟!),并且不了解 Foo 或任何实际实现,因此传递构造函数参数没有意义。

编辑:我要补充一点,如果接口(interface)存在,则模拟接口(interface)几乎总是比模拟具体实现更可取。如果您只有一个具体的实现,那么您想要模拟它的事实可能意味着它是添加接口(interface)的一个很好的候选者。

关于c# - 如何在没有默认构造函数的情况下模拟对象上的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394021/

相关文章:

c# - NHibernate 一对多映射 : Insert Child Item Problem

c# - 最小起订量失败,因为它需要返回值但不让我提供

c# - 测试/模拟什么?

c# - 如何在 C# 中模拟来自 httpclient 的响应,Azure 函数,如何测试

c# - 从数据表读取数据时减少内存使用

c# - 从资源中加载嵌入的动画 Cursor

c# - streamwriter 不能正确保存 unicode 文件

c# - 在 wpf 中找不到 "Resources"文件

asp.net-mvc-3 - 单元测试因 Sessions 而失败

c# - 使用 Moq 通过任意键和值设置任意