我有一个方法,我试图单元测试,使用查询对象,我想这个查询对象存根单元测试。这个查询对象确实有一个依赖关系(UnitOfWork)。我正在使用IOC/DI容器来在应用程序中实例化我的对象。不过,我不想在TDD时使用容器。我看到它的方式是我有两个选择:构造函数注入或不注入TDD?
- 查询对象添加到方法的类的字段或属性,并注入它作为一个构造函数参数。但是这并不正确,因为此方法是唯一会使用它的方法,如果我必须添加使用此查询对象的第二种方法,则必须重新实例化对象或每次使用后重置。
- 将查询对象添加到方法的签名中。闻?
是否还有其他选项或模式?或者我接近它错了?
下面是一些伪代码:
选项#1
public class OrdersController
{
public OrdersController(IOrderQuery query)
{
this.query = query;
}
private readonly IOrderQuery query;
public Queryable<Order> OrdersWaiting()
{
var results = query(...);
...
}
}
选项#2
public class OrdersController
{
public Queryable<Order> OrdersWaiting(IOrderQuery query)
{
var results = query(...);
...
}
}
我的查询对象
public class OrderQuery : IOrderQuery
{
public OrderQuery(IUnitOfWork unitOfWork)
{
...
}
}
不错,其中一个啊!我的时刻。谢谢! – mxmissile 2010-01-22 20:31:00