我正在我的开发组织中试用 Cucumber 进行功能/集成测试,并且一直在使用 Citrus 和它为 API 测试提供的标准胶水。我遇到的障碍是如何动态更改场景中给定变量的 REST URL。该功能似乎存在于 Java DSL 中,但未在 Cucumber 步骤中公开。我可以为 citrus-http:client 配置系统属性的占位符,但显然需要在 Spring 加载应用程序上下文时解决这些问题。我希望在我的后台消息定义中能够做的是:
Given message todoListRequest
And <todoListRequest> header Content-Type is "application/json"
And <todoListRequest> header Accept is "application/json"
And <todoListRequest> uri is "/todo/${item-number}"
然后在一个场景中:
Scenario: Gets expected item for specified item number
Given variables
| item-number | 3 |
When <todoListClient> sends message <todoListRequest>
Then <todoListClient> should receive message <todoListResponse>
服务主机名和端口仍然可以在应用程序上下文中配置,并将构造的 URI 附加到该值以创建方法的目标(在这种情况下为 GET,尽管我没有指定,也许这是需要的其他内容添加?)。这看起来合理吗?显然,我可以为此编写自己的胶水,但我想看看是否有一个开箱即用的功能,用于在走这条路之前似乎非常明显的 REST 场景。我知道 Cucumber 集成是相当新的(从 2.6 开始?)所以它可能仍在成熟。如果欢迎,我会在这个领域提供帮助......
谢谢