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