这是我的控制器。。。
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/categories")
public POSResponse getAllCategories() {
String countryCode="1";
return infoService.getAllCategories(countryCode);
}
这是我的testController。。。。
@Mock
InfoService infoService;
@InjectMocks
private InfoController infoController;
private MockMvc mockMvc;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(infoController).build();
}
@Test
public void getAllCategoriesTest() throws Exception {
POSResponse response=new POSResponse();
Category category=new Category();
category.setCountryCode(1);
category.setDescription("Mother Dairy");
response.setResponse(category);
when(infoService.getAllCategories("1")).thenReturn(response);
mockMvc.perform(get("/categories"))
.andExpect(status().isOk())
.andExpect(content().contentType(APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.id", is(1)))
.andExpect(jsonPath("$.description", is("Mother Dairy")));
verify(infoService, times(1)).getAllCategories("1");
verifyNoMoreInteractions(infoService);
}
我正在使用球衣控制器。当我调用该方法时,我得到错误消息"java.lang.AssertionError:Status expected:<200>but was:<400>"
HTTP 400代表错误请求,根据规范,应在以下情况下返回:
由于语法不正确,服务器无法理解该请求。
由于您在控制器中定义了:@RequestParam(value = "videoid", required = true) String videoId)
,在您的测试中,您正在传递videoId,spring无法匹配videoId,这是一个必需的参数,因此会引发400
错误。
请注意,您请求中的参数必须与您在RequestParam
中定义的value
相匹配,而不是与参数的名称相匹配。
解决问题的一种方法是添加(mvc:注释驱动):
在您提到所有spring配置的xml文件中。
当你执行测试用例时,日志显示它找不到给定的url模式。甚至连日志都说找不到控制器。
也许这会对某人有所帮助。