Probably something like this:
// create an IDataReader Mock object and return it when ExecuteReader is called
MockObject mockIDataReader = MockManager.MockObject(typeof(IDataReader));
db.ExpectAndReturn("ExecuteReader",mockIDataReader as IDataReader);
mockIDataReader.ExpectAndReturn("Read",true); // (Note 1)
// send dummy data (Note 2)
mockIDataReader.ExpectGetIndex("123").Args("Id");
mockIDataReader.ExpectGetIndex("TypeMock").Args("Name");
mockIDataReader.ExpectGetIndex("Test").Args("Description");
// called by using
mockIDataReader.ExpectCall ("Dispose");
Note 1: If we want to check a bad Read we can use
mockIDataReader.ExpectAndReturn("Read",false);
Note 2: If we want to create a test that is more rigid to changes in the method and will allow us to change the order of the MyObject initilization block without failing the tests, we can use
conditional expectations (This requires an Enterprise License)
// send dummy data
mockIDataReader.ExpectGetIndex("123").When("Id");
mockIDataReader.ExpectGetIndex("TypeMock").When("Name");
mockIDataReader.ExpectGetIndex("Test").When("Description");