当前位置: 首页 > 知识库问答 >
问题:

Pact JS:提供程序测试

居乐池
2023-03-14

关于测试提供程序,我有几个问题:

  1. 在进行测试之前,是否需要启动提供程序服务?我应该在测试中到达实际的提供者endpoint吗?例如,假设我的提供者代码库上有一个GET/dogsendpoint。运行测试时,是否需要在本地启动服务,点击/dogsendpoint,然后用pact文件验证为该endpoint返回的响应?
  2. 如果我想将其作为配置项管道的一部分运行(我使用的是Circloci),那么有哪些最佳实践可以遵循?我是否需要从循环构建步骤启动我的服务,指向某个数据库,然后按照上面的步骤操作?
  3. 在提供者测试中是否有使用存根的概念?如果是的话,那么这些服务是如何工作的。对此有任何示例或示例代码吗?

共有1个答案

养星汉
2023-03-14

是否需要启动提供程序服务才能进行测试?我应该在测试中到达实际的提供者endpoint吗?

是的,您启动了您的提供者,并使用了实际的endpoint(请参阅下面的警告)

当我运行测试时,是否需要在本地启动服务,点击/dogsendpoint,然后用pact文件验证为该endpoint返回的响应?

  • 添加本地电话号码是有效的
  • 添加具有全国拨号代码的电话号码是有效的
  • 添加带有国家拨号代码的电话号码是有效的
    • 它可以以+00
    • 开头

    尽管有很多案例,Pact只有一个成功案例和一个失败案例是合适的:

    • 尝试添加有效的电话号码->无论成功响应是什么
    • 尝试添加无效电话号码->无论无效电话号码响应是什么。
    // end point for "add phone number"
    request = unmarshalResponse(data)
    success = recordPhoneNumber(request)
    response = marshallResponse(success)
    send(response)
    

    因为我们只对合同感兴趣,所以在recordPhoneNumber()中省略业务逻辑是合适的,这意味着,pact将测试您的网络层和封送器。

    根据您的代码设计,放置存根的最佳位置将会改变。在我们的示例中,存根可能如下所示:

    // stub for recordPhoneNumber()
    if (request.phoneNumber === "+12 345 1234 123") {
       return new Valid()
    } else if (request.phoneNumber === "123") {
       return new Invalid("Number too short")
    }
    

    理想情况下,契约测试不需要endpoint以外的任何基础设施(数据库、缓存等)。所以,理想情况下,你可以把存根放在一个地方,你不需要启动那些东西。

    Pact并不适合集成测试工具(尽管可以这样使用它,但如果这样做,您会遇到其他问题)。

      null
    server.post('/setup', (req, res) => {
      const state = req.body.state
    
      animalRepository.clear()
      switch (state) {
        case 'Has no animals':
        // do nothing
        break
       default:
        importData()
      }
    }
    

 类似资料:
  • 我想为我的客户和API建立契约测试。我的API不能在本地运行,所以我希望能够在部署到生产之前,针对已部署的API临时版本运行提供程序测试。 我在网上看到的提供程序测试的大多数示例都使用了localhost。当尝试对我部署的HTTPSendpoint运行提供程序测试时,测试失败,显示。是不支持HTTPS协议,还是我遗漏了什么? 使用pact-provider-verifier cmd line工具工

  • 测试运行的结果如下: 由于使用本地协议文件会使测试变为绿色,我想原因不在我的测试类代码中,不过如果有帮助的话,我在这里提供它: 由于使用本地协议文件不是一个选项,我真的想知道如何修复错误,并将感谢任何有帮助的意见。

  • 我是angular和jhipster的新手,我已经编辑了登录组件,添加了formbuilder和MatDialogRef,并更新了单元测试:

  • 我已经在文件中添加了所有相关build.gradle依赖项。尽管如此,当我尝试运行调用SOAP服务时,还是会出现以下错误。共享依赖项部分和错误详细信息。使用Java11。网上已经有很多答案,但似乎都不起作用。任何帮助/建议将是值得赞赏的。 低于错误跟踪

  • 我正在使用pact-jvm提供程序Spring。我有两个不同的pact(.json)文件,比如(order.json和irs.json),我需要按顺序运行它们(order后面是irs),但是根据字母顺序选择测试类,irs首先运行,order其次运行。是否有方法调用、执行特定的测试类提供程序状态或定义测试类执行顺序?

  • 问题内容: 我目前正在做我的第一个Java项目,并且希望完全TDD。我正在使用JUnit编写测试。显然,JUnit不提供对数据提供程序的支持,这使得使用20个不同版本的参数测试同一方法变得很烦人。支持数据提供者的Java最受欢迎/最标准的测试工具是什么?我遇到过TestNG,但不知道它有多受欢迎,或与替代品相比如何。 如果有一种方法可以使这种行为成为使用JUnit的好方法,那么这也可能会起作用。