爲了教育目的,我應該如何設置IWindsorContainer的模擬,以便我可以進行單元測試執行註冊?如何模擬windsor容器以測試註冊
假設我有這樣的方法:
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);
上述失敗,如預期的,但我m好奇如何正確地測試它。
我可以使用真正的容器而不是模擬,並驗證它解析了2個不同的類的實例,但我認爲它不是「純粹的」單元測試,因爲它實際上依賴於外部代碼的工作(windsor容器本身)。
正如我所說,這是理論上的,所以如果需要的話不在問題的範圍之內。
如果您在假容器上測試註冊,此測試的目的是什麼?它什麼都不測試。 –