@Test public void testLoadAndSaveWithConflictingChanges() { ConflictResolver conflictResolver = mock(ConflictResolver.class); UUID identifier = UUID.randomUUID(); DomainEventMessage event2 = new GenericDomainEventMessage<String>( identifier, (long) 2, "Mock contents", MetaData.emptyInstance()); DomainEventMessage event3 = new GenericDomainEventMessage<String>( identifier, (long) 3, "Mock contents", MetaData.emptyInstance()); when(mockEventStore.readEvents("test", identifier)) .thenReturn( new SimpleDomainEventStream( new GenericDomainEventMessage<String>( identifier, (long) 1, "Mock contents", MetaData.emptyInstance()), event2, event3)); testSubject.setConflictResolver(conflictResolver); TestAggregate actual = testSubject.load(identifier, 1L); verify(conflictResolver, never()) .resolveConflicts(anyListOf(DomainEventMessage.class), anyListOf(DomainEventMessage.class)); final StubDomainEvent appliedEvent = new StubDomainEvent(); actual.apply(appliedEvent); CurrentUnitOfWork.commit(); verify(conflictResolver) .resolveConflicts(payloadsEqual(appliedEvent), eq(Arrays.asList(event2, event3))); }