Why is TDD not working here?
Posted
by
TobiMcNamobi
on Programmers
See other posts from Programmers
or by TobiMcNamobi
Published on 2013-07-03T09:46:09Z
Indexed on
2013/07/03
11:16 UTC
Read the original article
Hit count: 481
I want to write a class A
that has a method calculate(<params>)
. That method should calculate a value using database data. So I wrote a class Test_A
for unit testing (TDD). The database access is done using another class which I have mocked with a class, let's call it Accessor_Mockup
.
Now, the TDD cycle requires me to add a test that fails and make the simplest changes to A
so that the test passes. So I add data to Accessor_Mockup
and call A.calculate
with appropriate parameters.
But why should A
use the accessor class at all? It would be simpler (!) if the class just "knows" the values it could retrieve from the database. For every test I write I could introduce such a new value (or an if-branch or whatever).
But wait ... TDD is more. There is the refactoring part. But that sounds to me like "OK, I can do this all with a big if-elseif construct. I could refactor it using a new class ... but instead I make use of the DB accessor and do this in a totally different way. The code will not necessarily look better afterwards but I know I WANT to use the database".
© Programmers or respective owner