If it is very difficult to set up the full persistent implementation of a Repository for test, or too slow to use it, you can leverage another approach. You may also face undesirable conditions early on during domain modeling, perhaps when your persistence mechanisms, including the database schema, are not yet available. When you face any of these situations, it works best to implement an in-memory edition of Repositories.
Creating in-memory editions can be quite simple, but it may also pose some challenges. The simple part is creating a
HashMap to back your interface. It is straightforward to
put() entries to and
remove() them from the
Map. We just use the globally unique identity of each Aggregate instance ...