我試圖學習依賴注入,並遇到單元測試應用程序時出現問題。依賴注入解決方案和單元測試
我正在寫一個控制檯應用程序,創建並在main()初始化的容器,它可作爲一個Program.Container
get-property
,在我的應用程序,以便在任何地方我可以打電話Program.Container.Resolve<..>()
。
我有一個ServiceValidator類是這樣的:
public class ServiceValidator
{
private readonly IConfiguration _configuration;
private readonly IService _service;
public ServiceValidator(IConfiguration configuration, IService service)
{
_configuration = configuration;
_service = service;
}
在另一大類我用
ServiceValidator serviceValidator = Program.Container.Resolve<ServiceValidator>();
serviceValidator.VerifyVersion();
這引起了我的問題,在單元測試Program.Container.Resolve
通話,因爲它不已設置。
那是一個不好的做法,呼籲解決在容器上?我可以在Main()
中創建ServiceValidator實例並傳遞該對象,但這似乎很愚蠢,因爲它會導致只傳遞給下一個方法的對象的很多參數。
所以我想這是可以接受的一類中調用化解,但隨後的容器必須配置爲單元測試。我應該怎麼做,我應該把容器移到另一個地方而不是Program課程嗎?你會推薦什麼?
如果它的事項,我使用的是團結和C#
感謝:-)
我還是想看看如何解決這個問題一個很好的模式,而又不使程序類... – 2009-05-04 13:38:33
的依賴>我存話費這樣的.. 你的意思是「決心」調用容器? – Karsten 2009-05-04 13:40:59
是的,我的意思是'解決'呼叫集裝箱。 – 2009-05-04 14:44:05