可选字段的微服务测试自动化验证

问题描述 投票:0回答:1

我目前正在为零售订单的约会计划系统进行微服务的功能测试自动化。我们有服务A,它使用带有客户详细信息,订单号,代理商ID(可选)的适配器调用服务B。服务B返回可用日期和时间段的响应。但是有2种方案进行调度

1)如果从服务A向其传递了代理ID,则服务B可以返回特定代理的插槽2)如果未传递代理ID,则服务B可以返回所有代理的插槽。

现在,我要验证以下情况:当我将代理ID传递给服务A时,适配器在调用服务B时应该传递给代理。

[有没有一种方法可以测试适配器是否已将正确的请求传递给服务B。我查看了合同测试的Pact,但是由于两种情况下的响应都是相同的,所以我不知道该如何实现。

automation microservices pact
1个回答
0
投票

我不确定您所说的“适配器”是什么意思,但是我猜这是服务A代码库中的客户端类负责向服务B发出HTTP请求。如果是的话,我相信您问题是“我可以检查适配器是否将代理ID参数传递给请求中的服务B”。答案是肯定的-这就是您在Pact使用者测试中编写请求期望值时所做的事情。

'withRequest'是测试的一部分,您可以在其中定义期望的请求:

const interaction = {
        state: "i have a list of cats",
        uponReceiving: "a request for cats with given catId",
        withRequest: {
          method: "GET",
          path: "/cats",
          query: {
            "catId[]": Matchers.eachLike("1"),
          },
          headers: {
            Accept: "application/json",
          },
        },
        willRespondWith: {
          status: 200,
          headers: {
            "Content-Type": "application/json",
          },
          body: EXPECTED_BODY,
        },
      }

https://github.com/pact-foundation/pact-js/blob/058ab6f63e4273b545761e82cd3d9a1ae4f72bb6/examples/jest/tests/catAPI.spec.js#L17-L26

© www.soinside.com 2019 - 2024. All rights reserved.