我是Ninject的新成員,我有一個非常簡單的要求,但我無法在Ninject的文檔中找到我想要的東西。用於測試的簡單依賴注入
我有一類這樣的:
public class User
{
public string Name {get;set;}
...
public ICollection<Address> Addresses {get; protected set;}
}
public class Address
{
public string Street {get;set;}
...
}
所以,我的測試類設置需要實例中使用的用戶在很多測試。
[TestClass]
public class UserTest
{
User _myUser;
[TestInitialize]
public void Setup()
{
_myUser = new User();
_myUser.Addresses.Add(new Address { Street = "Evergreen" }); // <-- Here I need Addresses must be Instantiated as, lets say, List<T>
}
}
我需要的是一個_myUser.Addresses
將與集合的實例注入。 我無法弄清楚如何使用Ninject完成此操作。你能爲我指出正確的方向嗎?
'用戶'和'地址'是實體。一般而言,您只應使用您的DI容器來管理服務。 – Steven
因此,使用依賴注入器創建我的'ICollection'沒有很好的理由,默認情況下有一個具體的實現?如果是這樣,我可以做一些類似'_myUser = new User {Addresses = new List ()}'並且忘記它,並且讓setter公開。 –
你必須記住DI和DI容器的用途:它們幫助你製作你的代碼更加靈活,可測試和可維護,允許您在可能想要更改的抽象背後隱藏邏輯,在(單元)測試期間在項目或邏輯中想要僞造/模擬的生命週期中替換。這個ICollection不可能包含你想在單元測試期間僞造的任何邏輯,或者稍後用其他邏輯代替。你不應該試圖從你的代碼中刪除你所有的'new'語句。區分[Newables和Injectables](http://bit.ly/12MiAuV)。 – Steven