java - 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",
...
谢谢!!!
解决方案
精确的!我更改为最新版本(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 或更高版本,则不会运行测试。
谢谢!!!!
推荐阅读
- javascript - 在 React Bootstrap Table 中使用分页加载部分和动态数据
- python - 如果值不存在,则追加 Python JSON
- python - python - 将字节字符串解压缩成非常大的任意大小的整数
- javascript - 使用 document.execCommand('insertHTML', 在 contentEditable 中插入 span
- java - 在 Spring Boot 中使用 @JsonView 时自定义 Jackson XML 输出
- excel - VBA 按钮 - 基于单元格值而不是 ActiveCell
- visual-studio - Visual Studio 扩展代码-/Editorstyle
- c++ - 剥离评论功能
- graphql - 设置 AWSAppSyncClient、Apollo 和 React 的正确方法
- tensorflow - 由于 Keras,模块“tensorflow”没有属性“占位符”