【问题标题】:java.lang.AssertionError: Status 404java.lang.AssertionError:状态 404
【发布时间】:2020-06-17 23:30:45
【问题描述】:

我在这个测试中遇到 404 错误,我想弄清楚为什么它给我这个错误,有人可以帮我吗

这是我的控制器:

 @PostMapping("/infoUtile/add/{idUser}")
    public InformationUtile addOrEditProcedure(@PathVariable(value = "idUser") Long id){
        User user = this.userService.getUser(id);
        InformationUtile info = new InformationUtile();
        info.setUser(user);
        return this.infoUtileService.addOrEditInfoUtile(info);
    }

这是我写的测试

 @Autowired
    private MockMvc mockMvc;


    @MockBean
    InformationUtileService informationUtileService;

    @MockBean
    UserService userService;

    ObjectMapper mapper = new ObjectMapper();

    @Test
    public void givenInformationsUtiles_whenGetInfoUtiles_thenReturnJsonArray()
            throws Exception {

        InformationUtile informationUtile = new InformationUtile();
        informationUtile.setId(1);
        informationUtile.setContent("oumaima");
        informationUtile.setDescription("test");
        Media medias = new Media();
        medias.setType("image/png");
        medias.setUrl("C:\\files\\actualite\\32769\\adobexd.png");
        List<Media> allMedias = new ArrayList<Media>();
        allMedias.add(medias);
        informationUtile.setMedias(allMedias);
        OngoingStubbing<User> user = Mockito.when(userService.getUser(Mockito.anyLong())).thenReturn(new User());
        Mockito.when(informationUtileService.addOrEditInfoUtile(Mockito.any(InformationUtile.class))).thenReturn(informationUtile);
        mockMvc.perform(post("/infoUtile/add/{id}",informationUtile.getId())
                .contentType(MediaType.APPLICATION_JSON)
                .content(mapper.writeValueAsBytes(informationUtile)))
                .andExpect(status().isOk());

    }

日志

【问题讨论】:

  • 也许在某个地方设置了一些上下文路径?
  • 不,没有上下文路径@Jan
  • 请求是否命中了控制器方法?也许它没有找到映射,因此返回 404,或者它是由控制器方法本身产生的。
  • 是的,它击中了控制器,但在 setUser 中停止了。我不知道为什么@MensurQulami
  • 能否提供日志,@Oumaima ?

标签: java junit mockito


【解决方案1】:

我遇到了同样的问题,就我而言,解决方案是使用完整路径
来自@RequestMapping(控制器注解)+@PostMapping(方法注解)

我不知道你是不是这样。你没有显示你的控制器类。但如果你有这样的事情:

@RestController
@RequestMapping("/api/v1")
public class SomeController {

    @PostMapping("/infoUtile/add/{idUser}")
    public InformationUtile addOrEditProcedure(@PathVariable(value = "idUser") Long id) {...}

}

那么测试中的路径将是

mockMvc.perform(post("/api/v1/infoUtile/add/{idUser}",informationUtile.getId())

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 2017-01-20
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多