我们有两个服务,其中一个是另一个的消费者。使用者是用Java编写的,提供者是用JavaScript编写的。
在消费者端,我们使用pact-jvm定义了一个consumer-contract-test,并且能够生成一个合同。在此契约中,响应的定义如下:
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json"
},
"body": [
"test"
]
},
Key: - is expected
+ is actual
Matching keys and values are not shown
-[
- "test"
-]
+{
+ "contents": {
+ "statusCode": 200,
+ "body": "[test]"
+ }
+}
用于pact验证的代码
const p = new MessageProviderPact({
messageProviders: {
'': handler
},
provider: 'provider-service',
pactUrls: [
path.resolve(
process.cwd(),
'pacts',
'consumer-service-provider-service.json'
)
]
});
有什么办法解决这个问题吗?是否可能在消费者端使用带有内容键的类似消息结构?或者我们可以在提供方用其他方法解决它吗
MessageProviderPact
用于消息队列类型的交互,而不是HTTP交互。我认为您需要标准的verifier
类(https://github.com/pact-foundation/pact-js/#provider-api-testing):
const { Verifier } = require('@pact-foundation/pact');
let opts = {
...
};
new Verifier(opts).verifyProvider().then(function () {
// do something
});
我正在开发一个带有一些公共API的静态C++库。我必须为库提供的API实现使用者驱动的契约。但在我的情况下,我必须向消费者提供他们同意的合同。 有没有任何方法可以在文件中定义合同,并且可以测试所有的API。这样做的主要目的是隔离测试。 请您分享一些输入来实现文件中定义的合同,并为这些合同编写一个测试程序。
The Ethereum eco-system provides many methods of interacting with the blockchain. In ethers.js we expose a Provider API that covers the breadth of operations, however often it is useful to inter-opera
提供者(Provider) 是一个连接以太坊网络的抽象,用与查询以太坊网络状态或者发送更改状态的交易。 EtherscanProvider 和 InfuraProvider 提供连接公开的第三方节点服务提供商,无需自己运行任何以太坊节点。 JsonRpcProvider 和 IpcProvider 允许连接到我们控制或可以访问的以太坊节点(包括主网,测试网,权威证明(PoA)节点或Ganache)
我有一个场景,其中我的提供者服务提供了3个功能。在消费者端,我有3个不同的类来为这3个功能编写测试。当生成pact文件时,它包含了具有相同的使用者-提供者组合的所有测试。到目前为止还不错。 示例: ConsumerTestClass1 ConsumerTestClass2 ConsumerTestClass3 所有定义以下协议 @pact(provider=provider,consumer=co
在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge