我是一个TDD newb,我想弄清楚如何测试下面的代码。TDD测试数据加载方法
我想先写我的测试,但我有创建一个测试,触动了我DataAccessor麻烦。我无法弄清楚如何伪造它。我已经完成了货件类的扩展并覆盖了Load()方法;继续测试对象。我觉得好像我最终将单元测试我的Mock对象/存根,而不是我的真实对象。我认为在TDD中单元测试应该能够实现对象上的所有方法;不过,我可以似乎从来没有测试加载()代码只有重写模拟负载
我的测试编写包含基于关闭装运数量的订单列表的对象。
我有一个从数据库加载自己的对象。
public class Shipment
{
//member variables
protected List<string> _listOfOrders = new List<string>();
protected string _id = ""
//public properties
public List<string> ListOrders
{
get{ return _listOfOrders; }
}
public Shipment(string id)
{
_id = id;
Load();
}
//PROBLEM METHOD
// whenever I write code that needs this Shipment object, this method tries
// to hit the DB and fubars my tests
// the only way to get around is to have all my tests run on a fake Shipment object.
protected void Load()
{
_listOfOrders = DataAccessor.GetOrders(_id);
}
}
创建我的假冒货类来测试的类中的方法。我永远不能测试实际负载的方法,其余不具有实际DB连接
public class FakeShipment : Shipment
{
protected new void Load()
{
_listOfOrders = new List<string>();
}
}
有什么想法?请指教。
戴夫
另一种方法是在构造函数中传递订单。 – kyoryu 2010-03-08 01:09:36
感谢您的信息。我打算和第一个一起去,希望它能提高我的可测试性。 – 2010-03-08 01:16:12