+5  A: 

Usually I would treat behaviour and persistence as two different concerns and test them separately.

The Domain objects should remain oblivious to the existence of Repositories (though clearly not the other way round).

What we've done in this situation is to create a Controller (or a Service) that is responsible for loading the appropriate objects from their Repositories, invoking the behaviour on the objects then calling the Repositories to persist the updates.

You can then test the controller using a Mock repository to check that the controller is calling the repository with the updated objects.

Samuel Jack