[英]Junit test case falling with Mockito and Spring MVC
我有一个控制器类,我正在尝试使用模仿进行测试。
@Controller
public class LoginController {
final static Logger logger = Logger.getLogger(LoginController.class);
private StaffService staffService;
@Autowired
public LoginController(StaffService staffService) {
this.staffService = staffService;
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String showLoginPage(Model model) {
model.addAttribute("loginBean", new LoginBean());
return "login";
}}
我的测试课程如下所示:
@RunWith(MockitoJUnitRunner.class)
public class LoginControllerTest {
private static MockMvc mockMvc;
@Mock
private static LoginController loginController;
@Before
public void setUp() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/");
viewResolver.setSuffix(".jsp");
mockMvc = MockMvcBuilders.standaloneSetup(loginController).setViewResolvers(viewResolver).build();
}
@Test
public void testShowLoginPage() throws Exception {
loginController.showLoginPage(new ExtendedModelMap());
mockMvc.perform(get("/")).andExpect(view().name("login"));
}
}
但是,当我运行测试类时,出现以下错误。 请帮忙 !
java.lang.AssertionError: View name expected:<login> but was:<>
at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:54)
at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:81)
at org.springframework.test.web.servlet.result.ViewResultMatchers$2.match(ViewResultMatchers.java:69)
at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:171)
at com.expensecalculator.controller.test.LoginControllerTest.testShowLoginPage(LoginControllerTest.java:38)
可能是因为您正在模拟要测试的控制器。 您应该尝试以下方法:
@RunWith(MockitoJUnitRunner.class)
public class LoginControllerTest {
private MockMvc mockMvc;
private static LoginController loginController;
@Mock
private StaffService staffService;
@Before
public void setUp() {
loginController = new LoginController(staffService);
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/");
viewResolver.setSuffix(".jsp");
mockMvc = MockMvcBuilders.standaloneSetup(loginController).setViewResolvers(viewResolver).build();
}
@Test
public void testShowLoginPage() throws Exception {
mockMvc.perform(get("/")).andExpect(view().name("login"));
}
}
Mockito的模拟程序将其所有方法调用替换为默认行为,因此,当您的独立实现到达该方法时,它只会返回一个空字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.