Przeglądaj źródła

Use mockito for Observer testing.

Sam Jaffe 5 lat temu
rodzic
commit
4012c81aa8

+ 0 - 9
src/test/java/org/leumasjaffe/mock/MockBiConsumer.java

@@ -1,9 +0,0 @@
-package org.leumasjaffe.mock;
-
-import java.util.function.BiConsumer;
-
-public class MockBiConsumer extends MockCallable {
-	public <T, U> BiConsumer<T, U> call() {
-		return (t, u) -> super.called();
-	}
-}

+ 0 - 23
src/test/java/org/leumasjaffe/mock/MockCallable.java

@@ -1,23 +0,0 @@
-package org.leumasjaffe.mock;
-
-public class MockCallable {
-	private boolean set = false;
-	private int calls = 0;
-	private int called = 0;
-	
-	public void expect(int calls) {
-		if (this.set) {
-			throw new IllegalStateException("Please only call expect once");
-		}
-		this.set = true;
-		this.calls = calls;
-	}
-	
-	protected void called() {
-		++called;
-	}
-	
-	public boolean satisfied() {
-		return calls == called;
-	}
-}

+ 15 - 0
src/test/java/org/leumasjaffe/mock/MockObserverListener.java

@@ -0,0 +1,15 @@
+package org.leumasjaffe.mock;
+
+import org.leumasjaffe.observer.Observable;
+import org.leumasjaffe.observer.ObservableListener;
+
+public abstract class MockObserverListener {
+	private final ObservableListener<Void, Observable> impl =
+			new ObservableListener<>(null, (v, i) -> updateWasSignalled());
+	
+	public final void setObserved(Observable object) {
+		impl.setObserved(object);
+	}
+
+	public abstract void updateWasSignalled();
+}

+ 7 - 9
src/test/java/org/leumasjaffe/recipe/view/IngredientPanelTest.java

@@ -1,11 +1,11 @@
 package org.leumasjaffe.recipe.view;
 
 import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.leumasjaffe.mock.MockBiConsumer;
-import org.leumasjaffe.observer.ObservableListener;
+import org.leumasjaffe.mock.MockObserverListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Amount;
 import org.leumasjaffe.recipe.model.Ingredient;
@@ -46,15 +46,13 @@ class IngredientPanelTest extends SwingTestCase {
 	// TODO: I need to add hook-ups for the rest of the fields, too
 	@Test
 	void testViewUpdateSendsNotify() {
-		final MockBiConsumer mock = new MockBiConsumer();
-		mock.expect(2);
-		final ObservableListener<Void, Ingredient> listener =
-				new ObservableListener<>(null, mock.call());
-		listener.setObserved(stuff);
-		assertFalse(mock.satisfied());
+		final MockObserverListener mock = spy(MockObserverListener.class);
+		mock.setObserved(stuff);
+		verify(mock, times(1)).updateWasSignalled();
+
 		panel.getTxtName().setText("Bacon");
 		waitForSwing();
-		assertTrue(mock.satisfied());
+		verify(mock, times(2)).updateWasSignalled();
 	}
 
 }