我写了一份合同,插件自动生成测试。我在这些自动生成的测试中看到了一种非常奇怪的行为。
以下是我的服务终端:
@RequestMapping(value="/check/{id}" method= RequestMethod.GET, produces = Media.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Application>> getApplications(
@PathVariable (value = "id") String id){
return appService.findAll(id);
}
这是合同:
Contract.make {
request {
method GET()
url '/check/1234567'
}
response {
status 200
body("""
{
.........
}
""")
headers {
contentType(applicationJson())
}
}
}
当我跑步&#34; mvn clean install&#34;测试是自动生成并运行的。这适用于上述合同和测试通过。
但是,如果我将路径中的数据更改为&#34; / check / 12345678&#34;它开始失败了。
我无法理解的是我的端点采用的是id路径变量,这是一种String类型。对于这种类型的路径,任何值都应该是好的。但是,以下路径有效:
url '/check/1234567'
url '/check/12'
url '/check/12347'
以下没有工作:
url '/check/12345678' //added just one more digit
url '/check/aa4567' //prepended characters
url '/check/123aa' //appended characters
如果我可以获得有关此行为的解释或如何解决此问题,那就太棒了。实际上任何字符串都应该有效。例如"/check/234df-dfs-fs234fds-sdf-fssd3rr"
答案 0 :(得分:0)
您可以尝试使用urlPattern而不是url,替换
url '/check/1234567'
代表
urlPattern '/check/[0-9]+'