出于教育目的,我应该如何设置 IWindsorContainer 的模拟,以便我可以对执行的注册进行单元测试?
假设我有这样的方法:
public void MakeRegistration<S, T>(IWindsorContainer container)
where S : class
where T : class, S
{
container.Register(Component.For<S>().ImplementedBy<T>().LifeStyle.Transient);
}
我想为它写一个单元测试,使用起订量:
var container = new Mock<IWindsorContainer>(MockBehavior.Strict);
container.Setup(c => c.Register(
Component.For<IFoo>()
.ImplementedBy<Foo>()
.LifeStyle.Transient));
var registrar = new MyRegistrar();
registrar.MakeRegistration<IFoo, Foo>(container.Object);
正如预期的那样,上述失败了,但我很好奇如何正确测试它。
我可以使用真正的容器而不是模拟,并验证它是否解析了该类的 2 个不同实例,但我认为它不是“纯”单元测试,因为它实际上依赖于外部代码(windsor 容器本身)的工作。
正如我所说,这是理论上的,因此是否需要它超出了问题的范围。