如何以及是否使用 Pact 测试语法(错误请求)验证?

Gia*_*nio 4 java testing tdd microservices pact

我开始使用 Pact(在 Java 上)进行合约测试。

我已经阅读了关于 Pact 最佳实践的合同测试与功能测试,但我有点困惑。

示例:创建资源 (POST) 的简单 REST 端点,如果成功则返回 201 Created,如果语法验证错误则返回 400 Bad Request。请求正文类似于:

{
    "firstname" : "Foo",
    "lastname" : "Bar"
}
Run Code Online (Sandbox Code Playgroud)

firstnamelastname不能为空。据我了解,我可以在这里编写 3 个场景,其中提供者应返回 400 Bad Request:

  1. firstname,lastname不为空
  2. firstname不是空白,lastname空白
  3. firstname并且lastname都是空白

问题是,如果仅定义了“快乐路径协议”,模拟服务器将返回 500 内部服务器错误,如果我想让它返回 400 错误请求,我必须编写所有可能的协议。此外,如果我添加具有相同验证规则的其他字段,协议的数量就会激增。

  • 首先,我应该在我的消费者身上测试这些场景吗?
  • 如果是,是否存在任何智能方法来使用 Pact DSL 来实现它?

谢谢。

Fab*_*mos 5

当我\xe2\x80\x99m 为 a 建立合同时POST,我关心服务器接受有效输入以及服务器响应(通常400)错误输入的方式。\xe2\x80\x99s 不需要针对输入可能无效的所有可能方式签订合同,主要是因为这种情况可能因无数原因而发生。

\n

因此,从消费者的角度来看,我通常只对无效输入进行一次交互,除非我\xe2\x80\x99m面临一种非常特殊的情况,其中服务器可能会根据失败的原因做出不同的响应,并且我关心不同的反应。

\n

根据您的具体情况,仅针对上述三种情况之一编写合同。

\n