Макет нового объекта, созданного на уровне класса - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть класс SenderService, как показано ниже.

Я использую объект restTemplate для вызова URL. Как мне написать тест junit для этого ТОЛЬКО с помощью Mockito?

Я уже пытался создать шпиона для своего класса, но он не работает

@Service
public class SenderServiceImpl implements SenderService{

    @Autowired
    private Logger logger;

    private RestTemplate restTemplate = new RestTemplate();

     @Override
    public void sendNotification(SenderNotification notification) {
        try {
            HttpEntity sendRequestBody = new HttpEntity<> 
            (notification,headers);
            response = 
            restTemplate.postForEntity(url,sendRequestBody,String.class); 
     }
}

1 Ответ

0 голосов
/ 19 апреля 2019

Я согласен с комментариями - этот код требует внедрения зависимостей и должен быть исправлен. Если вы действительно хотите макетировать поле, вы можете использовать PowerMock или решение из этого вопроса: Mockito: фиктивная инициализация частного поля

Mockito поставляется с классом помощника, чтобы сэкономить вам котел отражения код таблички:

import org.mockito.internal.util.reflection.Whitebox;

//...

@Mock
private Person mockedPerson;
private Test underTest;

// ...

@Test
public void testMethod() {
    Whitebox.setInternalState(underTest, "person", mockedPerson);
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...