I have a SpringBoot app designed to be used with AxonServer. One particular case, that I would like to test, is that an Aggregate cannot be created twice, when the create command with the same AggregateIdentifier is sent and that my REST-API returns an appropriate HttpStatus
This case is answered by AxonServer with an
AxonServerRemoteCommandHandlingException wrapped in
CommandExecutionException and that is what my error handling is based on.
I tried different ways how to test that in a SpringBoot integration test:
- AxonServer in Testcontainers - behaves exactly the same, but is really slow and required dind when it should run in pipelines
- InMemoryEventStorageEngine - this case isn’t handled at all, both commands are executed without any exception
- JpaEventStore with InMemory H2 - sending the 2nd command results in
AggregateStreamCreationException. So it somehow behaves correctly, but my error handling does not recognize that, so the test is pretty useless.
So what’s the best way to test that? Is Testcontainers really the only way? Why do the different implementations behave differently or, if they behave the same, throw different exceptions?
Any input would be appreciated!