【问题标题】:How to write mockito test for post request如何为发布请求编写模拟测试
【发布时间】:2020-03-20 14:37:17
【问题描述】:

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

@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.perform(post("/updateDetails").accept(MediaType.TEXT_HTML).params(params)).andExpect(status().isOk());

产生的错误:

这表示 post 方法被禁止,我的测试失败

这是我的测试课

@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());
    }


}

【问题讨论】:

标签: java spring-boot mockito


【解决方案1】:

关于你的更新:

  1. 感谢您就特定错误/特定问题澄清您的帖子。

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

    Unit test Springboot MockMvc returns 403 Forbidden

我认为问题发生在“mockMvc”对象不是 autowired.mockMvc 对象应该从 WebApplicationContext 加载 在程序运行之前。

  1. 请 - - 考虑查看我上面引用的一个或多个链接。

我发现这三个网站都是非常宝贵的资源。花费在这些教程上的时间将对您有很大帮助!

【讨论】:

  • 我已经自动连接了 webApplicationContext。抱歉,我没有发布整个代码。但它仍然给出同样的禁止错误。
猜你喜欢
  • 1970-01-01
  • 2018-04-07
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多