有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何为post请求编写mockito测试

此函数用于更新数据库中的用户详细信息。有人能帮我写这个函数的测试用例吗

@RequestMapping(value = "/updateDetails", method = RequestMethod.POST)
    public String updateVendorDetails(@Valid @ModelAttribute("users") Users users, BindingResult result,Model model) {
        logger.info("{}.{}",new VendorController().getClass().getPackageName(), new VendorController().getClass().getName());

        if(result.hasErrors()) {
            model.addAttribute("edit","edit");
            logger.warn("Function: updateVendorDetails(), Information: Error while updating vendor details");
            return register.toString();
        }
        userDao.updateVendorDetails(users);
        logger.info("Function: updateVendorDetails(), Information: Vendor details updated successfully");
        return vendor.toString();
    }

更新

代码:

mockMvc。执行(post(“/updateDetails”)。接受(MediaType.TEXT\uHTML)。params(params))。andExpect(状态()。isOk())

产生的错误:

This says that post method is forbidden and my test fails

这是我的测试课

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestVendorPage {

    @Autowired
    private WebApplicationContext context;

    private MockMvc mockMvc;

    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build();
    }




    @WithMockUser(roles = "VENDOR")
    @Test
    public void testIfUpdateEdtailsIsAvailableOnlyForVendor() throws Exception {

        MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
        params.add("firstName", "vinod");
        params.add("lastName", "babu");
        params.add("contactNumber", "9952016709");
        mockMvc.perform(post("/updateDetails").accept(MediaType.TEXT_HTML).params(params)).andExpect(status().isOk());
    }


}

共 (1) 个答案

  1. # 1 楼答案

    关于您的更新:

    1. 感谢你用一个具体的错误/问题澄清你的帖子

    2. 对于该特定错误-HTTP 403: Forbidden,这应该可以解决问题:

      Unit test Springboot MockMvc returns 403 Forbidden

    i think probleam is happend in "mockMvc" object is not autowired.mockMvc object should load from WebApplicationContext in before program run.

      请注意,请参阅上面引用的一个或多个链接。

    我发现这三个网站都有非常宝贵的资源。花时间学习这些教程会对你有很大帮助