TDD test data loading methods

Posted by Dave Hanson on Stack Overflow See other posts from Stack Overflow or by Dave Hanson
Published on 2010-03-08T00:39:14Z Indexed on 2010/03/08 0:52 UTC
Read the original article Hit count: 413

Filed under:
|
|

I am a TDD newb and I would like to figure out how to test the following code.

I am trying to write my tests first, but I am having trouble for creating a test that touches my DataAccessor. I can't figure out how to fake it. I've done the extend the shipment class and override the Load() method; to continue testing the object. I feel as though I end up unit testing my Mock objects/stubs and not my real objects. I thought in TDD the unit tests were supposed to hit ALL of the methods on the object; however I can never seem to test that Load() code only the overriden Mock Load

My tests were write an object that contains a list of orders based off of shipment number.

I have an object that loads itself from the database.

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);
 }


}

I create my fake shipment class to test the rest of the classes methods .I can't ever test the Real load method without having an actual DB connection

public class  FakeShipment : Shipment
{

 protected new void Load()
 {
     _listOfOrders = new List<string>();
 }


}

Any thoughts? Please advise.

Dave

© Stack Overflow or respective owner

Related posts about TDD

Related posts about c#