[英]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.