Mockito cuando / luego no devuelve el valor esperado

Estoy tratando de silenciar este método getKeyFromStream, usando los emparejadores 'any'. Intenté ser más explícito y menos explícito (anyObject ()), pero parece que no importa lo que intente, este trozo no devolverá el fooKey en la prueba de mi unidad.

Me pregunto si es porque está protegido o hay algo más que me falta o que estoy haciendo incorrectamente. Tengo otras declaraciones cuando / luego a lo largo de las pruebas queestan trabajando pero por alguna razón aquí, no lo es.

Nota: el getKeyFromStream generalmente usa un byteArrayInputStream, pero estoy tratando de hacer coincidirlo con un InputStream, he intentado ambos en vano.

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;
    }
}

Prueba de unidad

@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);
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta