模拟在类级别创建的新对象

时间:2019-04-19 11:59:04

标签: java mockito

我有一个如下所示的SenderService类。

我正在使用restTemplate对象来调用url。我应该如何仅使用Mockito编写一个junit测试?

我已经尝试为我的班级创建一个间谍,但是它不起作用

@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 :(得分:0)

我同意这些注释-此代码需要注入依赖项,而应该加以修复。 如果您真的想模拟字段,可以使用PowerMock 或此问题的解决方案: Mockito: Mock private field initialization

  

Mockito附带了一个帮助器类,可以为您节省一些反射器   板号:

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

//...

@Mock
private Person mockedPerson;
private Test underTest;

// ...

@Test
public void testMethod() {
    Whitebox.setInternalState(underTest, "person", mockedPerson);
    // ...
}