如何模拟本地创建的对象?

时间:2017-09-08 07:17:44

标签: java junit powermock powermockito

这是我的班级。

class Test {
    public void print(){
        RestTemplate restTemplate = new RestTemplate(); 
        restTemplate.getForObject("url", String.class);
    }
}

测试这个课程,我想模拟" RestTemplate"。有没有办法在不改变代码的情况下做到这一点。

2 个答案:

答案 0 :(得分:4)

无法在不更改代码的情况下完成,至少不会以优雅的方式完成。

每次输入/app/route/foo方法时,都会创建RestTemplate的新实例,因此无法传入模拟内容。

稍微更改方法以使用RestTemplate作为参数。在运行时,这将是RestTemplate的实际实例,但是当单元测试该方法时,它能够接受模拟。

print()

答案 1 :(得分:1)

您希望使用markerClusters.on('spiderfied', function (event) { var cluster = event.cluster; // Center the map on the clicked cluster if it gets spiderfied. map.panTo(cluster.getLatLng()); }); 的注入实例进行测试。

RestTemplate

在测试设置中,您可以根据需要模拟@Autowired private TestRestTemplate restTemplate; 的行为。