Mockito когда / то не возвращает ожидаемое значение

Я пытаюсь заглушить этот метод getKeyFromStream, используя «любые» совпадения. Я пытался быть более явным и менее явным (anyObject ()), но кажется, что независимо от того, что я пытаюсь, эта заглушка не вернет fooKey в моем модульном тесте.

Мне интересно, потому что это защищено или есть что-то еще, что я пропускаю или делаю неправильно. У меня есть другие, когда / тогда заявления на протяжении тестов, которыеработают но по какой-то причине здесь это не так.

Примечание: getKeyFromStream обычно использует byteArrayInputStream, но я пытаюсь сопоставить его с InputStream, я пробовал оба безрезультатно.

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

Модульный тест

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

Ответы на вопрос(1)

Ваш ответ на вопрос