Mockito, wenn / dann der erwartete Wert nicht zurückgegeben wird

Ich versuche, diese getKeyFromStream-Methode mit den "any" -Matchern zu stoppen. Ich habe versucht, expliziter und weniger explizit zu sein (anyObject ()), aber es scheint, als würde dieser Stub den fooKey in meinem Unit-Test nicht zurückgeben, egal was ich versuche.

Ich frage mich, ob es daran liegt, dass es geschützt ist oder etwas anderes fehlt oder falsch gemacht wird. Ich habe andere when / then-Anweisungen während der Tests, diesind am Arbeite aber aus irgendeinem Grund ist es hier nicht.

Hinweis: Der getKeyFromStream verwendet im Allgemeinen einen byteArrayInputStream, aber ich versuche, ihn mit einem InputStream abzugleichen. Ich habe beide ohne Erfolg versucht.

public class FooKeyRetriever() //Mocked this guy
{
    public FooKey getKey(String keyName) throws KeyException {

        return getKeyFromStream(getKeyStream(keyName, false), keyName);
    }

    //Stubbed this method to return a key object which has been mocked
    protected FooKey getKeyFromStream(InputStream keyStream, String keyName){
        //Some code
        return fooKey;
    }
}

Gerätetes

@Mock
private FooKeyRetriever mockKeyRetriever;

@Mock
private FooKey fooKey;

@Before
public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
}

@Test
public void testGetFooKey() throws Exception {



    when(foo.getKeyFromStream(any(InputStream.class),any(String.class))).thenReturn(fooKey);

    FooKey fooKey = mockKeyRetriever.getKey("irrelevant_key");

    assertNotNull(fooKey);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage