我正在尝试在消费者端验证合同时使用场景(也称为状态)。这些场景在spring cloud contracts中通过使用groovy脚本的数字前缀来定义,就像文档中所说的那样:
my_contracts_dir\
scenario1\
1_login.groovy
2_showCart.groovy
3_logout.groovy
因此,在wiremock json文件中,我看到添加了"newScenarioState“字段,如下所示:
{
"uuid" : "34a829d1-adf4-41e4-b7d9-6ee66d7de8bc",
"request" : {
"url" : "/foo/demo",
"method" : "GET"
},
"response" : {
"status" : 200,
"body" : "[{\"model\":{\"address\":\"Address\",\"name\":\"String\"}}]",
"headers" : {
"Content-Type" : "application/json"
}
},
"scenarioName" : "Scenario_contracts",
"requiredScenarioState" : "Step2",
"newScenarioState" : "Step3"
}
问题是我如何在编写消费者集成测试时使用这个状态?假设我想让stab开关状态为"Step3“。在消费者集成测试中怎么做?
附加信息:在消费者集成测试(即Junit测试)中,我使用StubRunnerRule而不是@AutoConfigureStubRunner。所以我希望通过这个规则,我可以使用一些api来设置存根的状态。但我什么也没找到。
发布于 2017-01-25 01:25:43
您可以通过发送适当的请求将服务器切换到某种状态。如果您想将状态从step1切换到step2,那么您必须发送一个适当的请求来触发从step1到step2的转换。在您展示的示例中,您必须发送从step1到step2再从step2到step3的转换的请求。在后一种情况下,它将是WireMock存根中描述的GET消息。请记住,尽管如此,您将进入与状态相关的问题。您的存根将在您的测试之间共享-记住在您的测试中传递@DirtiesContext注释,以确保将产生新的上下文,并且您将能够以您想要的方式设置您的存根。
最后一句话-尽量不要使用有状态测试,只需将问题分成可以独立测试的单独步骤即可。这样你就可以快速、并行地测试这些东西了。对于约定测试,您不一定需要在存根端使用任何状态。
https://stackoverflow.com/questions/41834335
复制相似问题