在我的单元测试中,我使用和TestInitialize 之AssemblyInitialize
类的东西来配置我的测试。在我初始化一些用于创建服务的单例工厂、一个工作单元和存储库(全部通过 Unity/Dependency Injection)。在我的TestInitialize 中,我清除了他们必须确保每个测试可以独立运行的状态。ClassInitialize
AssemblyInitialize
通过 Stackoverflow,我找到了以下文章:编写可测试代码和如何考虑单元测试方面的“新”运算符。我不得不说他们改变了我对我编写的一些代码的看法,但我的头脑仍然嗡嗡作响。
例如,采用以下代码:
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 注入它?