在我的单元测试中,我使用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