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

针对部署的HTTPS提供程序运行Pact提供程序测试

屠杰
2023-03-14

我想为我的客户和API建立契约测试。我的API不能在本地运行,所以我希望能够在部署到生产之前,针对已部署的API临时版本运行提供程序测试。

我在网上看到的提供程序测试的大多数示例都使用了localhost。当尝试对我部署的HTTPSendpoint运行提供程序测试时,测试失败,显示Read server hello a:unknown protocol。是不支持HTTPS协议,还是我遗漏了什么?

func TestTenantProvider(t *testing.T) {

    // Create Pact connecting to local Daemon
    pact := &dsl.Pact{
        Consumer: "TenantConsumer",
        Provider: "TenantProvider",
    }


    // Verify the Provider with local Pact Files
    pact.VerifyProvider(t, types.VerifyRequest{
        ProviderBaseURL:        "https://my-staging-endpoint.com",
        PactURLs:               []string{filepath.ToSlash(fmt.Sprintf("%s/tenantconsumer-tenantprovider.json", pactDir))},
    })
}

使用pact-provider-verifier cmd line工具工作良好。

共有1个答案

爱唯
2023-03-14

它应该支持通过HTTPS进行验证,但目前我认为在Pact Go(参见HTTPS://github.com/pact-foundation/pact-go/issues/66)中,我们不太容易支持带有自签名证书的SSL(请参阅HTTPS://github.com/pact-foundation/pact-go/issues/66)。

理论上,您应该能够按照以下方式为您的SSL配置[1]设置一个环境变量:

若要连接到使用自定义SSL证书的Pact代理,请将环境变量$SSL_CERT_FILE或$SSL_CERT_DIR设置为包含相应证书的路径。

  • [1]https://github.com/pact-foundation/pact-ruby-standalone/releases
 类似资料:
  • 关于测试提供程序,我有几个问题: 在进行测试之前,是否需要启动提供程序服务?我应该在测试中到达实际的提供者endpoint吗?例如,假设我的提供者代码库上有一个GET/dogsendpoint。运行测试时,是否需要在本地启动服务,点击/dogsendpoint,然后用pact文件验证为该endpoint返回的响应? 如果我想将其作为配置项管道的一部分运行(我使用的是Circloci),那么有哪些最

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

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

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

  • 下面是我的app.js文件 下面是我的状态文件 我有一个模板,我想从那里导航到下一个状态 但是只要我点击这个锚标签,它就会把我导航回主页。(不去我打算去的州)。主要问题是URL(我猜)任何帮助都会很感激。