微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 用Moq模拟’new()’约束

我想测试一个带有类型签名的函数

public static void DoSomething<T>(T something)
    where T : class,IInterfaceA,IInterfaceB,new()

它在内部使用新的T().

我在为T创建模拟时遇到问题.感谢另一个问题,我已经找到了mocking multiple interfaces解决方案.但是,我无法创建满足new()约束的模拟.我如何使用Moq解决这个问题?

解决方法

您有两种选择:

>使用无约束模拟框架.在.NET中,它意味着Isolator或JustMock.两者都使用IL编织在运行时注入代码,并且可以伪造/模拟在生产代码中创建的对象.
>拆分DoSomething逻辑并使用依赖注入,而不是将对象创建为逻辑的一部分.

在两者之间进行选择取决于拆分逻辑的难度,剩下的代码是否有足够的“肉”,以及你是否愿意支付可以伪造新的Mocking框架

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐