Is this the situation?
aMethod(whatToLoad) {
// other stuff
x = Assembly.LoadFrom( whatToLoad );
// code using x
}
First principle: We are focusing on testing aMethod(), the testing of Assembly.LoadFrom() is a separate problem. While we are building tests for aMethod() we don't try to test its dependencies.
So here what kind of tests might we need?
- That we pass the right value for whatToLoad
- That we correctly store/use the value returned
- That we correctly handle errors or exceptions thrown from Assembly.LoadFrom()
It is easiest to do this if the test can supply a Mock implementation. Then we can test 1 by checking that the Mock received the expected value. Test 2 by returning a well defined value (or for mulitiple tests different interesting values) Test 3 by generating chosen error conditions.
So you have changed your code to something like this:
aMethod(loader, whatToLoad) {
// other code
x = loader.Load( whatToLoad );
// code using x
}
Maybe the loaded is injected in some other way, but the point is that you can now specify different tests my setting up a suitable loaoder. For example, for the first test.
testLoader = new MockLoaderThatRembers();
tested.aMethod(testLoader, loadThis);
assertEquals(testLoader.getLoader(), loadThis);
So if that's the kind of thing you are doing then yes, I'd say you're enabling TDD.