首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring-cloud-contract设置状态

Spring-cloud-contract设置状态
EN

Stack Overflow用户
提问于 2017-01-25 01:15:56
回答 1查看 306关注 0票数 0

我正在尝试在消费者端验证合同时使用场景(也称为状态)。这些场景在spring cloud contracts中通过使用groovy脚本的数字前缀来定义,就像文档中所说的那样:

代码语言:javascript
运行
复制
my_contracts_dir\
    scenario1\
        1_login.groovy
        2_showCart.groovy
        3_logout.groovy

因此,在wiremock json文件中,我看到添加了"newScenarioState“字段,如下所示:

代码语言:javascript
运行
复制
{
  "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来设置存根的状态。但我什么也没找到。

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 01:25:43

您可以通过发送适当的请求将服务器切换到某种状态。如果您想将状态从step1切换到step2,那么您必须发送一个适当的请求来触发从step1到step2的转换。在您展示的示例中,您必须发送从step1到step2再从step2到step3的转换的请求。在后一种情况下,它将是WireMock存根中描述的GET消息。请记住,尽管如此,您将进入与状态相关的问题。您的存根将在您的测试之间共享-记住在您的测试中传递@DirtiesContext注释,以确保将产生新的上下文,并且您将能够以您想要的方式设置您的存根。

最后一句话-尽量不要使用有状态测试,只需将问题分成可以独立测试的单独步骤即可。这样你就可以快速、并行地测试这些东西了。对于约定测试,您不一定需要在存根端使用任何状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41834335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档