diff --git a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java index 8b4951a..18ee747 100644 --- a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java +++ b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java @@ -67,6 +67,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; +import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -2357,6 +2358,16 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport { }).when(mockRegion).containsValueForKey(any()); + doAnswer(invocation -> { + + BiConsumer consumer = invocation.getArgument(0); + + data.forEach(consumer); + + return null; + + }).when(mockRegion).forEach(any(BiConsumer.class)); + // Region.get(key) when(mockRegion.get(ArgumentMatchers.any())).thenAnswer(invocation -> { diff --git a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java index c9ef68d..d7438e3 100644 --- a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java +++ b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java @@ -30,8 +30,10 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import static org.springframework.data.gemfire.util.RuntimeExceptionFactory.newIllegalStateException; +import java.util.HashSet; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import org.junit.After; @@ -545,4 +547,21 @@ public class MockRegionDataAccessOperationsAndEventsUnitTests { assertThat(this.mockRegion.containsValueForKey(2)).isFalse(); assertThat(this.mockRegion.containsValueForKey(3)).isFalse(); } + + @Test + public void mapForEachIsCorrect() { + + Set entryStrings = new HashSet<>(2); + + assertThat(this.mockRegion).hasSize(0); + + this.mockRegion.put(1, "TEST"); + this.mockRegion.put(2, "MOCK"); + + assertThat(this.mockRegion).hasSize(2); + + this.mockRegion.forEach((key, value) -> entryStrings.add(String.format("%1$s-%2$s", key, value))); + + assertThat(entryStrings).containsExactlyInAnyOrder("1-TEST", "2-MOCK"); + } }