Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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 莫基托没有';在Spring中不能使用自定义验证器_Java_Spring_Junit_Mockito_Springmockito - Fatal编程技术网

Java 莫基托没有';在Spring中不能使用自定义验证器

Java 莫基托没有';在Spring中不能使用自定义验证器,java,spring,junit,mockito,springmockito,Java,Spring,Junit,Mockito,Springmockito,我正在使用Mockito测试控制器类中的一个get映射。这是我的获取方法 @PostMapping(value = "insert/carbooking") public ResponseEntity<Void> reservation(@Valid BookingRequest bookRequest) { return validate(bookRequest, carService::booking); } 这是Mockito测试方法。由于s

我正在使用Mockito测试控制器类中的一个get映射。这是我的获取方法

 @PostMapping(value = "insert/carbooking")
    public ResponseEntity<Void> reservation(@Valid BookingRequest bookRequest) {
        return validate(bookRequest, carService::booking);
    }
这是Mockito测试方法。由于sin的格式错误,因此结果应该返回错误的请求

@Test
    public void reservationTest2() throws Exception {

        mockMvc.perform(MockMvcRequestBuilders
                .post("insert/carbooking")
                .param("license", "data")
                .param("SIN", "202007191517")
                .accept(MediaType.MULTIPART_FORM_DATA))
                .andExpect(status().isBadRequest());
    }
但测试失败了

java.lang.AssertionError: Status expected:<400> but was:<200>
Expected :400
Actual   :200
java.lang.AssertionError:应为状态:但为:
预计:400
实际:200

Mockito有没有办法接收“reservationValidator”?

多亏了@chrylis onstrike-,我把一切都修好了。对于源代码,我只需要在addholders-setup方法之前删除
,并将其替换为
Mockmvc-Mockmvc
上的注释
@Autowired
,以及服务类上的注释
@MockBean
,它们将客户端类放在应用程序上下文中。太遗憾了,我不能给他的答案打勾,因为他没有把我的问题的答案贴出来,而是对它进行评论。

多亏了@chrylis onstrike-,我把一切都修好了。对于源代码,我只需要在addholders-setup方法之前删除
,并将其替换为
Mockmvc-Mockmvc
上的注释
@Autowired
,以及服务类上的注释
@MockBean
,它们将客户端类放在应用程序上下文中。很遗憾,我不能给他的答案打勾,因为他没有把我的问题的答案贴出来,而是对它进行评论。

你没有展示你是如何获得
mockMvc
。不要使用
standaloneSetup
,因为它确实存在此类问题(不能准确反映“非独立”环境)。````@injectmock私有CarController;@beforeach public void setUp(){mockMvc=standaloneSetup(clientController).addPlaceholderValue(“插入/carbooking”,CAR1\u端点)}```我该如何解决这个问题?你在使用Spring Boot吗?(还要注意,不要在测试之外的任何东西上使用字段注入;使用构造函数注入来避免各种错误。)然后使用
@springbootest@AutoConfigureMockMvc
@Autowired MockMvc
您可能需要使用类似
@MockBean
(我使用Spock,它有一个稍微不同的设置,用于将mock作为SpringBean插入)。您没有显示如何获取
mockMvc
。不要使用
standaloneSetup
,因为它确实存在这类问题(不能准确反映“非独立”环境).InjectMocks private CarController CarController;@beforeach public void setUp(){mockMvc=standaloneSetup(clientController).addPlaceholderValue(“插入/carbooking”,CAR1\u端点)}``我如何修复它?您使用Spring引导吗?(还要注意,不要在测试之外的任何东西上使用字段注入;使用构造函数注入来避免各种错误。)然后使用
@springbootest@AutoConfigureMockMvc
@Autowired MockMvc
您可能需要使用类似
@MockBean
(我使用Spock,它有一个稍微不同的设置,用于将模拟作为SpringBean插入)。
java.lang.AssertionError: Status expected:<400> but was:<200>
Expected :400
Actual   :200