0

在我的客户端代码中,我使用 json 模式来验证 json 响应(使用ajv)。我计划使用pact-js生成协议以针对提供者运行以进行合同测试。

我希望我的客户端代码在运行时验证期间使用的模式以及合同测试在协议验证期间使用的模式有一个单一的事实来源。有没有办法从 pact 文件生成 json(或 swagger)模式,或者是否有一个库使用 pact 文件本身对单个 http 响应进行运行时验证(而不是仅用于合同测试中的合同验证) ?

我意识到这是一个先有鸡还是先有蛋的问题,因为我需要首先运行客户端代码作为测试运行的一部分以生成协议(进而生成 json 模式),所以我必须找出一个好的为此的工作流程。

我也意识到契约测试应该减少对运行时验证的需求,但契约测试仍然不够全面,无法捕捉所有现实世界的场景。

4

1 回答 1

0

简短的回答是否定的,尽管我相信有一些 OSS 库试图解决这个问题(没有一个是官方的,但我记得有一次在论坛上出现过这个问题)。

无论哪种方式,尽管意图是好的,但我们认为这项任务是徒劳的。这两种技术是互补的,但毫无疑问会随着时间的推移而发展,这使得管理变得更加困难。

您可以通过几种方式与 Swagger 集成,例如,Atlassian 的优秀人员创建了一些您可以查看的 [1][2]。

[1] https://bitbucket.org/atlassian/swagger-request-validator

[2] https://bitbucket.org/atlassian/swagger-mock-validator

[3] https://github.com/pact-foundation/pact-specification/issues/28

于 2017-06-28T13:07:26.140 回答