diff --git a/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java b/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java index 311981af..aa3ff8b7 100644 --- a/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java +++ b/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java @@ -433,6 +433,18 @@ public class Scenario { consumer.accept(result.first(), result.second()); } + + /** + * Verifies the underlying {@link AssertablePublishedEvents}. + * + * @param events must not be {@literal null}. + */ + public void andVerifyEvents(Consumer events) { + + Assert.notNull(events, "Consumer must not be null!"); + + events.accept(Scenario.this.events); + } } public class EventResult { diff --git a/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java b/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java index 890d51eb..1a90cfc2 100644 --- a/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java +++ b/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java @@ -382,6 +382,20 @@ class ScenarioUnitTests { assertThat(specialCustomizer.invoked).isFalse(); } + @Test // GH-185 + @SuppressWarnings("unchecked") + void invokesEventVerificationOnMethodInvocationStimulus() { + + Consumer consumer = mock(Consumer.class); + + new Scenario(tx, publisher, new DefaultAssertablePublishedEvents()) + .stimulate(() -> {}) + .andWaitForStateChange(() -> true) + .andVerifyEvents(consumer); + + verify(consumer).accept(any()); + } + private Fixture givenAScenario(Consumer consumer) { return new Fixture(consumer, DELAY, null, new DefaultAssertablePublishedEvents()); }