gpt4 book ai didi

c# - 使用 Moq 模拟 'new()' 约束

转载 作者:行者123 更新时间:2023-11-30 12:42:50 25 4
gpt4 key购买 nike

我想用类型签名测试一个函数

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

它在内部使用 new T()

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

最佳答案

你有两个选择:

  1. 使用不受约束的模拟框架。在 .NET 中,它表示 Isolator 或 JustMock。两者都使用 IL 编织在运行时注入(inject)代码,并且可以伪造/模拟在生产代码中创建的对象。
  2. 拆分DoSomething 逻辑并使用依赖注入(inject)而不是将创建对象作为逻辑的一部分。

在两者之间做出选择取决于拆分逻辑的难易程度、剩余代码中是否有足够的“内容”以及您是否愿意为可以伪造

关于c# - 使用 Moq 模拟 'new()' 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32603151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com