我正在尝试测试两个不同的控制器类,因为我想测试两个类中的一个方法,并且我将使用 @WebMvcTest,我的问题是有没有办法将模拟注入两个类,可能是这样的?
@WebMvcTest(HomeController.class , BookController.class)
public class ControllerTest{
Run Code Online (Sandbox Code Playgroud)
当然这会导致错误,所以这是否意味着在使用 @WebMvcTest 时我们只能测试一个控制器中的方法?每班
@WebMvcTest接受Class<?>[]为value():
public @interface WebMvcTest {
...
@AliasFor("controllers")
Class<?>[] value() default {};
...
}
Run Code Online (Sandbox Code Playgroud)
传递单个值(可能只是因为它是注释)或数组是如此合法。
您的问题是您没有使用正确的语法来声明文字数组。
尝试 :
@WebMvcTest({HomeController.class, BookController.class})
public class ControllerTest{
Run Code Online (Sandbox Code Playgroud)
请注意,通过注释您的测试类@WebMvcTest而不评估注释声明中的任何参数:
@WebMvcTest
public class ControllerTest{
Run Code Online (Sandbox Code Playgroud)
所有 Spring 控制器都添加到 Spring 上下文中。