Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为post请求编写mockito测试_Java_Spring Boot_Mockito - Fatal编程技术网

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

Java 如何为post请求编写mockito测试,java,spring-boot,mockito,Java,Spring Boot,Mockito,此函数用于更新数据库中的用户详细信息。有人能帮我写这个函数的测试用例吗 @RequestMapping(value = "/updateDetails", method = RequestMethod.POST) public String updateVendorDetails(@Valid @ModelAttribute("users") Users users, BindingResult result,Model model) { logger.info("{}.

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

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


}
@RunWith(SpringJUnit4ClassRunner.class)
@春靴测试
公共类TestVendorPage{
@自动连线
私有WebApplicationContext上下文;
私有MockMvc-MockMvc;
@以前
公共作废设置(){
mockMvc=MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build();
}
@WithMockUser(roles=“VENDOR”)
@试验
public void testifuUpdatedTailsisAvailableOnlyForVendor()引发异常{
多值映射参数=新的LinkedMultiValueMap();
参数添加(“名字”、“酒号”);
参数添加(“姓氏”、“巴布”);
参数添加(“联系人号码”,“9952016709”);
mockMvc.perform(post(“/updateDetails”).accept(MediaType.TEXT_HTML).params(params)).andExpect(status().isOk());
}
}

关于您的更新:

  • 谢谢你用一个具体的错误/问题来澄清你的帖子

  • 对于该特定错误-
    HTTP 403:Forbidded
    -这应该可以解决问题:

  • 我认为probleam出现在“mockMvc”中,而对象不是 autowired.mockMvc对象应在中从WebApplicationContext加载 在程序运行之前

    请考虑看上面提到的一个或多个链接。


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

    请在编写mockito测试时添加一些代码。您面临的问题是什么?我们不能只告诉您如何“测试此方法”。你需要学习如何测试。建议:请考虑通过这些教程中的任何一个:MoCKMVC。执行(POST(/UpDeaDebug))。接受(Mydiyype .TrimeHTML)。PARAMS(PARAMS)。ANDEXPECT(StaseSube).ISOK();这说明post方法是禁止的,我的测试fails@AMITHSAI,你能与邮递员成功联系吗?我已经自动连接了webApplicationContext。对不起,我没有发布全部代码。但它仍然给出了同样的禁止错误。