【发布时间】:2021-07-16 20:39:56
【问题描述】:
使用 Spring 2.0.3.RELEASE、JUnit Jupiter 5.7.0、Mockito 3.3.3
尝试测试Class01类的方法method01:
public class Class01 {
private RestConnector con;
public Class01(){
con = RestConnector.getInstance();
}
public Response method01(String x) {
Class01 example = new Class01();
String x = example.isAuthenticated();
// more stuff after this
}
public String isAuthenticated() throws IOException {
// I do stuff
return "a string";
}
}
在测试课上试过
public class Class01Test{
@Mock private Class01 class01Mock;
@Spy @InjectMocks private Class01 class01;
@Test
public void test() throws Throwable {
doReturn("I returned").when(class01). ??? stuck here .. always goes into the isAuthenticated method
Response result = class01.method01("a string");
}
}
目前测试总是运行真正的方法isAuthenticated。 如何为方法method01中的字段示例设置一个mock,以便执行跳过进入方法isAuthenticated?
【问题讨论】:
-
自从
method01创建了一个新实例后,mock 从未被使用过。但是为什么会在method01中创建一个新实例?如果确实需要,则通过构造函数注入模拟或作为参数传递。 -
据我所知,这是在尝试连接到外部服务器。如果失败,它会尝试另一个位置。不遵循“通过构造函数注入模拟或作为参数传递”的意思