diff --git a/core/java/test/junit/net/i2p/TestContext.java b/core/java/test/junit/net/i2p/TestContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..a81bd40fb51cbf8e9ec20dae61b913a105950cb5
--- /dev/null
+++ b/core/java/test/junit/net/i2p/TestContext.java
@@ -0,0 +1,17 @@
+package net.i2p;
+
+public class TestContext extends I2PAppContext {
+
+    public TestContext() {
+        TestContext.setGlobalContext(this);
+    }
+
+    /**
+     * Allows overriding the existing I2PAppContext with a test context who's fields we may mock as we like
+     *
+     * @param ctx Our test context to replace the global context with
+     */
+    public static void setGlobalContext(TestContext ctx){
+        _globalAppContext = ctx;
+    }
+}
diff --git a/core/java/test/junit/net/i2p/util/ConvertToHashMockTest.java b/core/java/test/junit/net/i2p/util/ConvertToHashMockTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..de811acd1c468742d3963c4e217772ac98982823
--- /dev/null
+++ b/core/java/test/junit/net/i2p/util/ConvertToHashMockTest.java
@@ -0,0 +1,51 @@
+package net.i2p.util;
+
+import net.i2p.TestContext;
+import net.i2p.client.naming.NamingService;
+import net.i2p.data.Destination;
+import net.i2p.data.Hash;
+import org.junit.AfterClass;
+import org.junit.Before;
+
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import static org.mockito.Mockito.*;
+import static org.junit.Assert.*;
+
+public class ConvertToHashMockTest{
+
+    @Mock private NamingService namingService;
+    @Mock private Destination destination;
+    @Mock private Hash hash;
+
+    @InjectMocks TestContext testContext;
+
+    @Before
+    public void before() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    /**
+     * Reset the global context after all tests in the class are done.
+     *
+     * We would otherwise pollute the other tests that depend on I2PAppContext
+     */
+    @AfterClass
+    public static void afterClass(){
+        TestContext.setGlobalContext(null);
+    }
+
+    @Test
+    public void testMockedDestination() {
+        when(namingService.lookup("zzz.i2p")).thenReturn(destination);
+        when(destination.calculateHash()).thenReturn(hash);
+
+        assertSame(hash, ConvertToHash.getHash("zzz.i2p"));
+
+        verify(namingService).lookup("zzz.i2p");
+        verify(destination).calculateHash();
+    }
+}