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



我有一个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); 
     }
}

我同意评论 - 这段代码需要依赖注入,应该修复。如果你真的想模拟字段,你可以使用PowerMock或者这个问题的解决方案:模拟:模拟私有字段初始化

Mockito带有一个辅助类,可以为您节省一些反射锅炉 车牌代码:

import org.mockito.internal.util.reflection.Whitebox;
//...
@Mock
private Person mockedPerson;
private Test underTest;
// ...
@Test
public void testMethod() {
    Whitebox.setInternalState(underTest, "person", mockedPerson);
    // ...
}

相关内容

  • 没有找到相关文章

最新更新