目前,我有一个带有REST API的系统,但它也将Rabbitmq消息发布到另一个系统。
目前,我有单独的groovy文件,其中包含http和amqp的合同,但我希望在一个文件中完成。也就是说,我能够检查对API的http请求/响应是否工作正常,但无法检查amqp消息是否已发布。我必须使用合同创建一个额外的常规文件,该合同使用与先前测试相同的输入将数据发送到控制器,并检查消息是否确实已发布。
所以目前我在REST部分有一个这样的常规文件:
Contract.make {
name("http_event_with_valid_token")
description ('A event is received with a valid token.')
request {
method 'POST'
url '/events/token'
headers {
contentType(applicationJson())
}
body("""
{
"parameter": "value"
}
""")
}
response {
status 202
}
}
还有一个AMQP部分:
Contract.make {
name("amqp_event_with_valid_token")
description( "A event is received with a valid token.")
input {
triggeredBy('controller.event("token", "{\\"parameter\\":\\"value\\"}")')
}
outputMessage {
sentTo 'exchange.events.events'
body("""
{
"parameter": "value"
}
""")
headers {
header('token': 'token')
}
}
}
我想在一个常规文件中进行两项检查,而不生成两个单独的测试。这可能吗?
答案 0 :(得分:0)
如果您想使用带有参数的单个测试/测试套件,那么我建议您阅读[Spock Framework][1]
。它使您可以使用多个参数(即参数)执行相同的测试。
您可能需要为此稍微更改代码,但示例如下所示:
class HelloSpockSpec extends Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
where:
name | length
"Spock" | 5
"Kirk" | 4
"Scotty" | 6
}
}
您可以定义合同的多个元素,保持结构不变,并在有问题的定义的常规文件中检查响应状态(例如,您可以通过参数传递名称,描述,请求)。
Here是一些示例。