小编And*_*wry的帖子

如何使用命名组件对此IoC注册进行单元测试?(Autofac)

我正在考虑将一些复杂的创建代码转换为使用IoC容器,Autofac,因为我非常相信TDD,我正在为Module配置编写单元测试.

大多数功能都很容易测试,例如

var obj = container.Resolve<IThing>();
Assert.IsInstanceOfType(obj, typeof(ThingImplementer));
Run Code Online (Sandbox Code Playgroud)

但是我们有很多情况,我们有多个相同接口的实现者,不同的实现者被传递给不同的具体类.我通过使用命名注册解决了这个问题,例如

builder.RegisterType<ThingImplementer>().Named<IThing>("Implementer1");
builder.RegisterType<OtherImplementer>().Named<IThing>("Implementer2");
builder.Register(c => new Foo(c.ResolveNamed<IThing>("Implementer1"))).As<IFoo>();
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是编写单元测试以确保Foo获得ThingImplementer而不是OtherImplementer的简单方法.我想知道是否值得付出努力,我们确实有高级集成测试来涵盖这一点,但他们没有提供单元测试所做的文档或重构好处.

你会为此写一个单元测试吗?如果是这样,怎么样?

unit-testing ioc-container autofac

6
推荐指数
1
解决办法
2799
查看次数

标签 统计

autofac ×1

ioc-container ×1

unit-testing ×1