gpt4 book ai didi

java - Junit 测试用例与 Mockito 和 Spring MVC 一起下降

转载 作者:行者123 更新时间:2023-11-30 02:29:29 24 4
gpt4 key购买 nike

我有一个 Controller 类,我正在尝试使用mockito进行测试。

@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)

最佳答案

这可能是因为您正在模拟您正在尝试测试的 Controller 。你应该尝试这个:

@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 的模拟将所有方法调用替换为默认行为,因此当您的独立实现到达该方法时,它只返回一个空字符串。

关于java - Junit 测试用例与 Mockito 和 Spring MVC 一起下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595734/

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