gpt4 book ai didi

java - 对于模拟对象,Mockito 休息模板始终为空

转载 作者:行者123 更新时间:2023-12-01 16:36:44 26 4
gpt4 key购买 nike

当模拟包含休息模板的类时,休息模板始终为空,我的代码是:

public class ClassA {

private final RestTemplate restTemplate;

public ClassA(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}

public byte[] method(String url) {
// do some restTemplate.getForObject()
}
}

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class})
public class TestClass {

@Mock
private ClassA classa

public void test1() {

Mockito.doReturn(byeArray).when(classA).method("url");
}
}

检查行 Mockito.doReturn(byeArray).when(classA).method("url"); 时我注意到对象 classA 包含其余模板,但它为空。

最佳答案

模拟是在依赖项上完成的,而不是在被测试的类上完成的。还有一些方法可以在测试方法下模拟类,这可以使用 Spy 来完成。

在您当前的情况下,应该是这样的。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class})
public class TestClass {

@InjectMock
private ClassA classa

@Mock
private RestTemplate restTemplate

@Test
public void test1() {
Mockito.doReturn(byeArray).when(restTemplate).method(url);
}
}

被测类ClassA应使用@InjectMocks进行注释,并且依赖项应使用@Mock进行模拟。

还有一点需要注意,在你的测试用例中,你应该调用需要测试的ClassA方法。

@Test
public void test1() {
Mockito.doReturn(byeArray).when(restTemplate).doSomething(url);

classa.method(url);
}

关于java - 对于模拟对象,Mockito 休息模板始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61934163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com