btrz-pact 是一个用于测试微服务的 npm 包。它馈入了 Pact,这是一种微服务测试库,可用于JavaScript环境。
什么是 btrz-pact?
btrz-pact 是一个基于 Pact 风格的消费者驱动合同(Consumer Driven Contracts)库。在测试微服务时,合同用于定义生产者和消费者之间的接口,并允许各方在没有真实服务的情况下互相通信。这种方式允许我们在构建服务之前确保接口的兼容性,降低了构建后续服务时的错误成本。
Pact Tests 可以用来测试服务间的交互,并允许您在没有运行实际服务的情况下模拟和测试服务之间的交互。
安装 btrz-pact
要安装 btrz-pact 包,请使用以下命令:
npm install --save-dev btrz-pact
该命令会将 btrz-pact 安装到您的本地项目中。
使用示例
首先,为了测试大致的交互流程,我们将创建两个进程:一个是生产者,一个是消费者。我们通过 btrz-pact 在生产者和消费者之间建立合同。
生产者
我们将创建一个简单的生产者并导出其方法。生产者将运行在 http://localhost:3000 地址处。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ------------------------ ---------------- ----- ---- -- - ------------------- --- ---------------- -- -- - --------------------- ------ --------- -- ------------------------ --- -------------- - - -------- ------ -- - ---------------------------------- - ------- ------- -------- - --------------- ------------------- -- ----- --------------------- --- -- --
消费者
消费者将运行在 http://localhost:3001 地址处。它将使用生产者的接口发送请求,因此需要在 beforeEach
钩子中创建一个实例。
-- -------------------- ---- ------- ----- -------- - --------------------- -------------------- -- -- - ----- ---- - ----- ----- --------------- - --------------------------- --- --------- ------------- -- - -------- - ---------- --------- ----------- --------- ----------- ----- ----- --- ------ ----------------- --- ----------- ----- ----- -- -- - ----- ------------------------- ------ -- ---- - ----- -------------- -- ------- -- ----- ----- ------------ - ------- ------- ----- ------- -------- - --------------- ------------------- -- ----- - ----- ----- -- -- ---------------- - ------- ---- ----- - ----- ----- -- -- --- ----- ------ - ----- ------------------------------- - ------- ------- -------- - --------------- ------------------- -- ----- ---------------- ----- ----- --- --- ------------ ------------------------------ ----- ----- --- ----- ------------------ --- ---
在 beforeEach
中,我们使用生产者的端口号创建了一个 btrz-pact 实例,并在其上定义了消费者和生产者之间的合同。此后,我们就可以在 it
中使用 fetch
方法发送请求,并通过断言匹配返回的数据是否符合预期,以测试生产者和消费者是否成功通信。
运行测试
为了运行测试,我们将生产者和消费者作为独立的进程启动,并测试它们之间的通信。我们需要使用 npm run start:producer
和 npm run start:consumer
命令,其中这两个命令可以在 package.json
文件中定义为如下命令:
"start:producer": "node app.js", "start:consumer": "jest"
测试将运行并显示以下输出:
-- -------------------- ---- ------- ---- ------------------ -------- - ------- --- ------ ----------- --------- -------- ------ --------- -- --------------------- ---- ------- - ------- - ----- ------ - ------- - ----- ---------- - ----- ----- ------- --------- --
测试正常通过。
总结
在 btrz-pact 的帮助下,我们可以测试生产者和消费者之间的接口是否符合预期。通过消费者驱动合同的方法,我们可以在确保服务之间的接口兼容性的同时大大降低布置新服务的成本和繁琐性。
btrz-pact 的使用方式和范畴远不仅仅于此,学习 btr-pact 的方式必须深入研究 Pact 的具体能力。但我们在本文探讨的范围内,一定程度上提供了一个 btrz-pact 的入门级教程。
更多有关 btrz-pact 的信息请参阅其文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066c8cccdc64669dde53fa