Ответы Junit Mock не возвращаются в случае цикла - PullRequest
0 голосов
/ 18 октября 2019

У меня есть некоторые проблемы с тестовыми примерами Junit, ниже приведен случай: у меня есть метод под циклом внутри метода void:

List<Message> msgList = service1.getList();
for (Message message : msgList) {
 StorageObject object = cloudStorage.readObject(anotherObject);
 InputStream inputStream = object .getObjectContent();
 String text = IOUtils.toString(inputStream);
 // text to object mapping
 // third party service call
}

в моем модульном тестовом примере, я сделал ниже насмешки:

  1. service1.getList () возвращает список 2 объектов сообщения
  2. фиктивный объект хранения и предоставляет ему некоторые фиктивные значения, как показано ниже

    StorageObject stObject = new StorageObject ();stObject.setObjectContent (new StorageObjectInputStream (new ByteArrayInputStream («Привет, это пустышка, и это будет формат json» .getBytes ()), null));Mockito.when (cloudStorage.readObject (Mockito.any ())). ThenReturn (stObject);

Когда я выполняю тестовый сценарий, для первой итерации он работает отлично, и выполнение метода возвращаетправильный результат, но для второй итерации inputStream не имеет допустимых значений, поэтому текст возвращается как нулевой, почему так? Любая помощь будет оценена.

1 Ответ

1 голос
/ 18 октября 2019

Ваш InputStream очищается после первого чтения.

Вам необходимо пересоздать его для каждой итерации. Вы можете настроить mockito , чтобы он возвращал вновь созданный фиктивный объект InputSteam для каждого последующего вызова.

Mockito.when(cloudStorage.readObject(Mockito.any())).thenAnswer(new Answer() {
    Object answer(InvocationOnMock invocation) {
        StorageObject stObject = new StorageObject();
        stObject.setObjectContent(new StorageObjectInputStream(new ByteArrayInputStream("Hi, This is a dummy and it would be json format".getBytes()), null));
        return stObject;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...