c# - 使用 IoC 进行单元测试

标签 c# unit-testing mocking inversion-of-control

IoC 容器如何用于单元测试?使用 IoC 在大型解决方案(50 多个项目)中管理模拟是否有用?有什么经验吗?是否有任何适用于在单元测试中使用它的 C# 库?

最佳答案

一般来说,单元测试不需要 DI 容器,因为单元测试就是分离职责。

考虑一个使用构造函数注入(inject)的类

public MyClass(IMyDependency dep) { }

在您的整个应用程序中,IMyDependency 背后可能隐藏着一个巨大的依赖图,但在单元测试中,您将其全部扁平化为单个 Test Double。 .

您可以使用 Moq 或 RhinoMocks 等动态模拟来生成测试替身,但这不是必需的。

var dep = new Mock<IMyDependency>().Object;
var sut = new MyClass(dep);

在某些情况下,auto-mocking container可以很好,但您不需要使用与生产应用程序相同的 DI 容器。

关于c# - 使用 IoC 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1465849/

相关文章:

c# - 使用 File.Create 后如何释放/处置字符串文件以供读取?

java - Java 8 函数的 Mockito 参数匹配器

php - 带有回调参数的模拟方法

python - 在 Python 中模拟方法调用

java - EasyMock 期望字段值为空

c# - 如何锁定文件名

c# - 如何使用 Session.Delete(query) 知道删除了多少持久对象

java - Play 框架 - 如何模拟 render() 方法?

c# - 连接事件处理器

unit-testing - 运行 goapp test 时 main.main not defined 错误