Some of my tests are dependant on the internals and I dither on whether or not that's a good thing, ...
The XP folks call this "code smell". It's a signal that some restructuring or refactoring is needed in the code.
This happens to me a lot when I build post facto test cases, and find that a class is too dependent on, for example, there being a database underneath it, which can make it cumbersome to test. A solution to that particular problem is to restructure a class to make use a "database interface" class that can be passed in either at object creating time or to a method that populates an instance of the object. This makes it easy to swap in a "dummy" (testing) database interface during testing. This change takes code that looks like: $calendar->loadFromDatabase(); and reworks it to look like $calendar->loadFrom($calendarDatabase); where $calendarDatase is either a wrapper class that sits atop some "real" database, or an instance of TestCalendarDatabase, which exists soley to provide reproducable testing data.
In reply to Re: The Joy of Test
by dws
in thread The Joy of Test
by Ovid
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |