Методы моделирования объектов локальной области видимости с помощью Mockito2.7 - PullRequest
0 голосов
/ 16 ноября 2018

Мы используем Maven, Jersey, Mockito 2 в нашем проекте. Mockito 2.7.5 с зависимостью PowerMockito 1.7.4 вызывает некоторые проблемы: Невозможно смоделировать метод локальной переменной области видимости. Вот мой пример кода:

import com.fasterxml.jackson.databind.ObjectMapper;
public Class Sample{
public String method1(String input){
    ObjectMapper mapper = new ObjectMapper();
    InputDO inputDO = mapper.readValue(input, InputDO.class);
    }
}


Inside Test Class

@Test
public void testMethod(){
    ObjectMapper mapper = Mockito.mock(ObjectMapper.class);
    InputDO = inputDO = Mockito.mock(InputDO.class);
    doReturn(inputDO).when(mapper).readValue(anyString(), eq(InputDO.class));
    Sample s = Mockito.mock(Ssample.class);
    s.method1(anyString());
    assertNotNull(s);
}

Тест не пройден в mapper.raedValue (). Пожалуйста, помогите мне в насмешке над вышеуказанными шагами.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Убедитесь, что вы:

1) Аннотируйте тестовый класс с помощью:

@RunWith(PowerMockRunner.class)
@PrepareForTest(ObjectMapper.class)

2) Добавьте это в качестве первых строк вВы тестируете метод:

ObjectMapper mapper = Mockito.mock(ObjectMapper.class);
PowerMockito.whenNew(ObjectMapper.class).withNoArguments().thenReturn(mapper);
0 голосов
/ 16 ноября 2018

Test Fail, потому что вы создаете Mock для ObjectMapper в Test Class, но здесь Каждый раз, когда новый ObjectMapper создавался с новым ключевым словом. Так лучше будет

`class Test{
ObjectMapper ObjectMapperMock = new ObjectMapper();
ObjectMapper spymapper=spy(ObjectMapperMock);
doReturn(result).when(spymapper.readValue());
}

`

...