java.lang.AssertionError: 状态预期:<200>但在 junit 中是:<400>



这是我的控制器。。。

@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模式。甚至连日志都说找不到控制器。

也许这会对某人有所帮助。

相关内容

  • 没有找到相关文章

最新更新