如何模拟本地创建的对象



这是我的班级。

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

要测试此类,我想模拟" RestTemplate"。有没有任何方法可以在不更改代码的情况下执行此操作。

不能在不更改代码的情况下完成,至少不能以优雅的方式进行。

每次输入print()方法时,您都会创建RestTemplate的新实例,因此无法通过模拟。

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

class Test {
    public void print(RestTemplate restTemplate){
        restTemplate.getForObject("url", String.class);
    }
}
class TestTest {
    private final Test instance = new Test();
    @Test
    public testPrint() {
        RestTemplate restTemplateMock = mock(RestTemplate.class);
        instance.print(restTemplateMock);
        // TODO: verify method calls on the mock
    }
}

您要使用RestTemplate的注射实例进行测试。

@Autowired
private TestRestTemplate restTemplate;

在测试设置中,您可以按照需要模拟restTemplate的行为。

相关内容

  • 没有找到相关文章

最新更新