繁体   English   中英

模拟在类级别创建的新Object

[英]Mock a new Object created at class level

我有一个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:模拟私有字段初始化

Mockito附带一个助手类来为您节省一些反射锅炉板代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM