Write tests that confirm what the code does without any knowledge of how the code does it. Test WHAT, not the HOW. Tests should not be tightly coupled to implementation details. Program to the interface not to the implementation.
Theme of Design Patterns book: The focus here is encapsulating the concept that varies, a theme of many design patterns.