在我的單元測試中,我使用AssemblyInitialize
,ClassInitialize
和TestInitialize等配置我的測試。在AssemblyInitialize
中,我初始化了一些用於創建服務的單體工廠,一個工作單元和存儲庫(全部通過Unity/Dependency Injection)。在我的TestInitialize中,我清除了他們必須確保每個測試都可以獨立運行的狀態。何處移動構建一次性依賴關係以提高可測試性?
槽Stackoverflow我來到以下文章:Writing Testable Code和How to Think About the 「new」 Operator with Respect to Unit Testing。我不得不說,他們改變了我對我寫的一些代碼的看法,但我的頭腦仍然嗡嗡作響。
例如,採取以下代碼:
public class MyPresenter : BasePresenter<IMyView>
{
public MyPresenter(IMyView view)
: base(view)
{
}
public void PrepareView()
{
using (IMyService service = ServiceFactory.Instance.CreateService<IMyService>())
{
View.Data = service.GetData();
}
}
}
這是一個aspx頁面中使用這樣的:
Presenter = new MyPresenter(this);
if (!IsPostback)
{
presenter.PrepareView();
}
我應該如何改變這種類型的一種充分考慮到以前的文章?我應該將服務實例傳遞給PrepareView方法嗎?但是,然後我的ASPX頁面必須知道服務和工廠和東西,並在使用後處理服務。
我應該怎樣處理我的Singleton工廠?讓它成爲這個課程的一個屬性,並通過Unity注入它?
Ninject就像文章中提到的Guice一樣?我會看看它。 – 2011-12-30 11:05:09
是的,就是這樣。 – 2011-12-30 11:05:49