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