首页 > 解决方案 > Java8 和 Node 之间的“java.lang.Exception:没有找到提供者的任何协议文件...”

问题描述

我正在尝试在Java8(提供者)Node(消费者)之间运行协议测试,但我遇到了一个很难修复的异常。实际上,当我运行提供程序时,我收到以下错误消息:

“java.lang.Exception:没有找到提供者的任何协议文件......”

我注意到问题出在(可能)在由 Pact Broker 中的消费者(节点)生成的 pactSpecification 键名中。

Ex: 
 "metadata": {
    "pactSpecification": {
      "version": "3.0.0"
    }
  }

我运行 Pact localy 只是为了使用 @PactUrl 进行测试,我将关键pactSpecification (camelCase)的名称更改为pact-specification(带有破折号和小写字母),并且......它有效!

Ex: 
 "metadata": {
    "pact-specification": {
      "version": "3.0.0"
    }
  }

问题是,如何在 Java8 和 Node 之间匹配元数据键名“pactSpecification”“pact-specification” ?我在 maven 存储库中尝试了所有版本的 pact,但它不起作用。

实际上,在 Java 8 环境中,我使用具有以下依赖项的 Maven 3.5.2:

<pact.version>3.5.9</pact.version>

    <dependency>
        <groupId>au.com.dius</groupId>
        <artifactId>pact-jvm-consumer-java8_2.12</artifactId>
        <version>${pact.version}</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>io.netty</groupId>
                <artifactId>netty-handler</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>au.com.dius</groupId>
        <artifactId>pact-jvm-provider-spring_2.12</artifactId>
        <version>${pact.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<plugin>
    <groupId>au.com.dius</groupId>
    <artifactId>pact-jvm-provider-maven_2.12</artifactId>
    <version>${pact.version}</version>
    <executions>
        <execution>
            <id>deploy-contract</id>
            <phase>verify</phase>
            <goals>
                <goal>publish</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <pactBrokerUrl>${pact-broker.url}</pactBrokerUrl>
    </configuration>
</plugin>

对于 Node 环境,我使用以下依赖项:

"devDependencies": {
   "@pact-foundation/pact": "~6.0.0-alpha.14",
   "@pact-foundation/pact-node": "~6.19.0",
...

谢谢!!!

标签: javanode.jsangulartypescriptpact

解决方案


精确的!我更改为最新版本(3.5.21),我将 Intellij 更新到 2018.2 并且可以正常工作!

错误修复 3.15.19:“f71deb21 - 修复:协议规范属性应为驼峰式……” https://github.com/DiUS/pact-jvm/blob/master/CHANGELOG.md

IntelliJ 2017.3 中存在一个错误,如果协议版本为 3.5.18 或更高版本,则不会运行测试。

谢谢!!!!


推荐阅读