java - 在 jUnit 中,“+”符号的验证总是失败
问题描述
我在spring boot中有这个简单的控制器,带有参数验证:
@ApiOperation(value = "Test")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "OK"),
@ApiResponse(code = 400, message = "Bad request")
})
@PutMapping(value = "/test")
@ResponseStatus(value = HttpStatus.OK)
public void test(
@ApiParam(value = "Plus", required = true)
@Pattern(regexp = "^\\+$")
@RequestParam(value = "plus") String plus) {
System.out.println("Validation passed: " + plus);
}
如您所见,Plus字段仅接受“+”符号。当我尝试运行它并在 localhost swagger 上触发请求时,它可以工作。验证通过,我得到 HTTP 200 状态。
生成的招摇文件看起来不错,验证在那里:pattern: "^\\+$"
如果我尝试运行 jUnit 测试,验证失败,我会收到 400 Bad Request。在测试中,我使用从 swagger 文件生成的控制器:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@ActiveProfiles("test")
@DirtiesContext
public class CeCommissioningBffControllerTest {
@MockBean
private controllerApi api; //This is generated class from swagger file
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test(){
api.test("+");
}
}
为什么它在 jUnit 中失败?我试图在任何地方用“$”符号替换'+' ,然后令人惊讶的是它可以工作。
解决方案
推荐阅读
- cluster-computing - Nifi - 远程进程组 - PeerSelector
- c# - 在 C# 中,为什么在创建该类型的第一个实例后未初始化静态字段(如果没有静态构造函数)
- ruby-on-rails - Rspec:测试未处理的异常
- python - Sobel 和 Laplace 结果以灰度显示
- java - 将 Apache Log4j 包装到自定义类中的最佳方法。保持内存日志管理
- java - 调用带有/不带有 this 关键字的方法有什么区别
- asp.net - ASP.NET Core 2.1 如何将变量传递给 TypeFilter
- firefox-addon-webextensions - 如何隐藏 browserAction 图标并仅在与 content_scripts 匹配的网站上显示?
- javascript - Dynamo db 错误添加问题:{ InvalidParameterType: Expected params.Item['options'].S to be a string
- arrays - 如何将获取json格式的值转为数组