groovy - 如何在 TestHttpClient 中设置 POST 参数
问题描述
我正在使用 Ratpack 的TestHttpClientPOST
在 Spock 测试中为 REST API发送请求。API 的端点接受该参数myPostParam
作为请求正文/POST 参数的一部分。
我看到有一种post
方法可以执行 POST 请求,但我不知道如何发送参数myPostParam=123456
import ratpack.groovy.test.GroovyRatpackMainApplicationUnderTest
import ratpack.test.http.TestHttpClient
import ratpack.test.ServerBackedApplicationUnderTest
import spock.lang.Specification
class MyApiSpecification extends Specification {
ServerBackedApplicationUnderTest aut = new GroovyRatpackMainApplicationUnderTest()
@Delegate
TestHttpClient client = testHttpClient(aut)
def "Doing a API call for Stackoverflow"() {
given:
int myPostParam = 123456
when:
post("/api/v1.0/someMethod/")
// TODO: How do I add "myPostParam=$myPostParam" to the request body?
then:
response.statusCode == 201
response.body.text.empty
}
}
解决方案
可以TestHttpClient.params(action)
用来设置请求参数。这样的事情应该可以解决问题:
import ratpack.groovy.test.GroovyRatpackMainApplicationUnderTest
import ratpack.test.http.TestHttpClient
import ratpack.test.ServerBackedApplicationUnderTest
import spock.lang.Specification
class MyApiSpecification extends Specification {
ServerBackedApplicationUnderTest aut = new GroovyRatpackMainApplicationUnderTest()
@Delegate
TestHttpClient client = testHttpClient(aut)
def "Doing a API call for Stackoverflow"() {
given:
int myPostParam = 123456
when:
params({ params ->
params.put("myPostParam", myPostParam)
}).post("/api/v1.0/someMethod/")
then:
response.statusCode == 201
response.body.text.empty
}
}
推荐阅读
- c# - 全球资源翻译不起作用
- java - XML 到 JAVA (JAXB) 错误 - “SYSTEM”和系统标识符之间需要空格
- drupal-8 - 增加 Drush 9 的内存限制(不更改 php.ini 文件)
- python - Scikit-learn 机器学习模型使用多个 CPU 进行训练
- reactjs - 在特定页面上隐藏组件
- c# - 如何拦截.net框架类库的方法?[C#]
- node.js - 如何在 Windows 中为不同的 React 项目使用不同版本的 Nodejs
- ios - 将 RSS 提要加载到 IOS Swift
- npm - @material-ui/core 是否有 Typescript 类型?
- amazon-web-services - 如何为 AWS EC2 实例、S3 存储桶设置内存不足警报?