1

我写了一份合同,插件自动生成了测试。我看到这些自动生成的测试有一个非常奇怪的行为。

以下是我的服务端点:

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

当我运行“mvn clean install”时,测试会自动生成并运行。这适用于上述合同并且测试完美通过。

但是,如果我将路径中的数据更改为“/check/12345678”,它就会开始失败。

我无法理解的是我的端点正在采用字符串类型的 id path 变量。对于这种类型的路径,任何值都应该是好的。但是,以下路径有效:

    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"

4

1 回答 1

0

您可以尝试使用 urlPattern 而不是 url,替换

url '/check/1234567'

为了

urlPattern '/check/[0-9]+'
于 2017-09-21T07:15:43.570 回答