I must be doing something fundamentally wrong.
I am implmenting my repositories and then testing them with mocked data. All is well.
Now I want to test my domain objects so I point them at mock repositories.
But I’m finding that I have to re-implement logic from the ‘real’ repositories into the mocks, or, create ‘helper classes’ that encapsulate the logic and interact with the repositories (real or mock), and then I have to test those too.
So what am I missing – why implement and test mock repositories when I could use the real ones with mocked data?
EDIT: To clarify, by ‘mocked data’ I do not hit the actual database. I have a ‘DB mock layer’ I can insert under the real repositories that returns known-data.
Maybe your mixing your abstractions. maybe some of the helpers and logic that your talking about should be in your domain objects. Your repositories should be implementing a CRUD interface. So your domain logic should be using 8 actions from the repository. Good retrieve and Bad retrieve (exception thrown) are only two of the eight. One test, is how is the Bad retrieve handled in the domain object. The rest of the tests should be testing a Good retrieve.