在spock中具有以下单元测试用例
@ActiveProfiles("local")
@ContextConfiguration
@SpringBootTest(webEnvironment = RANDOM_PORT, classes = [DemoAppApplication])
class DemoAppIT extends Specification {
@LocalServerPort
int localServerPort
def setup() {
RestAssured.port = localServerPort
}
def 'test' () {
expect:
given()
.contentType(ContentType.JSON)
.when()
.body(Paths.get(getClass().getResource("/testdata/request.json").toURI()).toFile().text)
.get('/hello')
.then()
.statusCode(200)
}
}
下面是request.json文件
{
"trainingDate": "2022-08-10",
"code": "ZMD",
"name": "demo"
}
这里我想动态填充trainingDate字段。动态值应该是当前日期+ 10天,格式与上面的相同。
当我将请求主体传递给/hello
api时,日期应该以动态方式传递。
例如:
当前日期为2022-07-01
,并且每次都要在请求正文中加上10天。格式为YYYY-MM-dd
有没有可能做到这一点?
注意:我正在文件中维护请求
1条答案
按热度按时间ebdffaop1#
只需使用
GString
和注解中已共享的代码@OleVV。编辑:
由于OP确实想保留原来的文件,这里有一种方法可以做到.我们必须替换文件中的文本,在如何做上总是有取舍的,要么用占位符或者简单的文本替换,要么用json的解组和编组。
为了尽可能接近原始请求,我将使用文本替换。
那么只需在请求中使用
newBody
。