Mocking the 'new()' constraint with Moq
本文关键字:constraint with Moq new the Mocking | 更新日期: 2023-09-27 18:12:52
我想测试一个带有类型签名的函数
public static void DoSomething<T>(T something)
where T : class, IInterfaceA, IInterfaceB, new()
在内部使用new T()
。
我在为T
创建模拟时遇到问题。由于另一个问题,我已经找到了模拟多个接口的解决方案。然而,我无法创建一个模拟满足new()
约束。如何使用Moq解决这个问题?
您有两个选择:
- 使用无约束模拟框架。在。net中,它意味着隔离器或JustMock。两者都使用IL编织在运行时注入代码,并且可以伪造/模拟在生产代码中创建的对象。
- 拆分DoSomething逻辑,并使用依赖注入,而不是将对象创建为逻辑的一部分。
两者之间的选择取决于分割逻辑的困难程度,剩余的代码是否有足够的"内容",以及您是否愿意为可以伪造新