【发布时间】:2021-07-21 12:44:14
【问题描述】:
我正在使用空手道对 Spring Boot 应用程序进行集成测试。该应用程序使用另外两个服务(服务 A 和服务 B)。我为服务 A 和 B 编写了空手道模拟。我的集成测试被编写为两个不同的功能文件。其中一个功能使用 Mocks 测试服务 A 和 B。另一个功能使用 Mocks 测试服务 B,使用 Spring Contract Stubs 测试服务 A。
只有模拟的功能
Feature: Test Some feature
Background:
* configure headers = { Content-Type: 'application/json' }
* url baseUrl
#Start up the mocks
Scenario: Start the Mocks
* karate.start({ mock: '../mock/service/service-a.feature', port: 9000})
* karate.start({ mock: '../mock/service/service-b.feature', port: 9001})
带有模拟和 Spring Contract 存根的功能
Feature: Test Some more features
Background:
* configure headers = { Content-Type: 'application/json' }
* url baseUrl
#Start up the mocks
Scenario: Start the Mocks
# Service A will use Spring Contract stubrunner.
* karate.start({ mock: '../mock/service/service-b.feature', port: 9001})
现在,当我们运行测试时,第二个测试失败,说明端口已被使用。我尝试在首先运行的功能文件末尾使用karate.stop(9000),但这没有帮助。另外,我不确定此停止方法的行为。有什么建议可以解决这个问题吗?为什么测试完成后 mock 服务仍在运行?
【问题讨论】:
标签: java spring-boot integration-testing karate