这个Spring 3控制器的基本Spring测试给出了响应代码404结果而不是预期的200:
@RunWith(SpringJUnit4ClassRunner.class)
public class RootControllerMvcTest extends AbstractContextControllerTests {
private MockMvc mockMvc;
@Before
public void setup() throws Exception {
this.mockMvc = webAppContextSetup(this.wac)
.alwaysExpect(status().isOk()).build();
}
@Test
public void viewIndex() throws Exception {
this.mockMvc.perform(get("/")).andExpect(view()
.name(containsString("index"))).andDo(print());
}
AbstractContextControllerTests:
@WebAppConfiguration("file:src/main/webapp/WEB-INF/spring/webmvc-config.xml")
@ContextConfiguration("file:src/main/resources/META-INF/spring/applicationContext.xml")
public class AbstractContextControllerTests {
@Autowired
protected WebApplicationContext wac; }
我已经使用另一个测试验证了控制器方法本身,但是当我使用上下文时,即使控制器在容器中运行时提供正确的页面,测试也会失败。
有问题的控制器如下所示:
@Controller
public class RootController {
@Autowired
CategoryService categoryService;
@RequestMapping(value = "/", method = RequestMethod.GET, produces = "text/html")
public String index(Model uiModel) {
uiModel.addAttribute("categories", categoryService.findAll());
return "index";
}
显然,我没有测试我的想法。有什么建议如何对这个问题进行三角测量?
我在Pastebin发布了完整的网络mvc文件,以免混乱所有空间。
答案 0 :(得分:0)
仅供参考:value
的{{1}}属性不是XML配置文件,而是Web应用程序的 root 目录。因此,您当前的测试配置永远不会起作用。
假设@WebAppConfiguration
和applicationContext.xml
分别是 root 和webmvc-config.xml
DispatcherServlet
的XML配置文件,请尝试重新定义{{ 1}}如下:
WebApplicationContext
顺便说一句, abstract 测试类实际上必须声明为AbstractContextControllerTests
。 ;)
此致
Sam(Spring TestContext Framework的作者)