CS: Require Interface, not implementation. Eliminate testing var

If available, it's better to require interfaces rather than implementations.  It allows the end-user more flexibility.

While insignificant, the unit test change was more of a demonstration: you should eliminate as many variables as possible when unit testing to ensure you're isolating what you are testing.  Mocking an object you're not testing lets you control how it behaves in order to replicate expected results with what you are testing.