使用 Moq 模拟 'new()' 约束
Mocking the 'new()' constraint with Moq
我想用类型签名测试一个函数
public static void DoSomething<T>(T something)
where T : class, IInterfaceA, IInterfaceB, new()
内部使用 new T()
。
我在为 T
创建模拟时遇到问题。感谢另一个问题,我已经找到了 mocking multiple interfaces 的解决方案。但是,我无法创建满足 new()
约束的模拟。我如何使用最小起订量解决这个问题?
您有两个选择:
- 使用无约束模拟框架。在 .NET 中,它表示 Isolator 或 JustMock。两者都使用 IL 编织在运行时注入代码,并且可以 fake/mock 在生产代码中创建的对象。
- 拆分 DoSomething 逻辑并使用依赖注入而不是创建对象作为逻辑的一部分。
在两者之间做出选择取决于拆分逻辑的难易程度、剩余代码是否足够 "meat" 以及您是否愿意为可以伪造的 Mocking 框架付费 新
我想用类型签名测试一个函数
public static void DoSomething<T>(T something)
where T : class, IInterfaceA, IInterfaceB, new()
内部使用 new T()
。
我在为 T
创建模拟时遇到问题。感谢另一个问题,我已经找到了 mocking multiple interfaces 的解决方案。但是,我无法创建满足 new()
约束的模拟。我如何使用最小起订量解决这个问题?
您有两个选择:
- 使用无约束模拟框架。在 .NET 中,它表示 Isolator 或 JustMock。两者都使用 IL 编织在运行时注入代码,并且可以 fake/mock 在生产代码中创建的对象。
- 拆分 DoSomething 逻辑并使用依赖注入而不是创建对象作为逻辑的一部分。
在两者之间做出选择取决于拆分逻辑的难易程度、剩余代码是否足够 "meat" 以及您是否愿意为可以伪造的 Mocking 框架付费 新