加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:20:13 所属栏目:百科 来源:网络整理
导读:我想测试一个带有类型签名的函数 public static void DoSomethingT(T something) where T : class,IInterfaceA,IInterfaceB,new() 它在内部使用新的T(). 我在为T创建模拟时遇到问题.感谢另一个问题,我已经找到了mocking multiple interfaces的解决方案.但是,
我想测试一个带有类型签名的函数

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框架

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读