一個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";
}
顯然我沒有測試我在想什麼。任何建議如何三角化這個問題?
我張貼的全Web MVC框架的文件在Pastebin不擾亂整個空間在這裏。
謝謝你的建議,山姆。我也必須添加paranthesis(編輯上面的代碼),但是這解決了我的問題,謝謝!我應該質疑,在名稱,抽象名稱中沒有用「Abstract」做類,但是我從[Spring-MVC-Showcase](https://github.com/spring-projects/spring- mvc-showcase/blob/master/src/test/java/org/springframework/samples/mvc/AbstractContextControllerTests.java),並且必須假定這是做到這一點的正確方法。感謝您指出那個新手錯誤。 – MiB
很高興爲你效勞!並感謝您指出缺少的括號。我只是在沒有IDE的情況下鍵入代碼。 ;)我現在修正了這個例子。 –