您使用 Java 吗?如果是这样,那么最好的方法是在 Java 代码中执行测试设置。您可以为 B 和 c 启动 2 个模拟,then开始对服务 A 进行主要测试。最后根据需要进行清理。
您可以参考这个例子:https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example
第 3 行展示了如何开始模拟并运行空手道测试。
如果您不使用 Java 但想使用only独立的 JAR,实际上可以使用 Java 互操作,而且非常简单,我刚刚尝试过。
编辑:此 API 现在已内置到 Karate 中,因此您无需编写以下额外的 JS 代码:https://github.com/intuit/karate/tree/master/karate-netty#within-a-karate-test https://github.com/intuit/karate/tree/master/karate-netty#within-a-karate-test
(过时的)
首先创建一段足够智能的 JavaScript 代码来启动空手道模拟:
function() {
var Mock = Java.type('com.intuit.karate.netty.FeatureServer');
var file = new java.io.File('src/test/java/mock/web/cats-mock.feature');
var server = Mock.start(file, 0, false, null);
return server.port;
}
这就是它在Background
您的主要空手道测试。您可以了解如何在需要时执行一些条件逻辑,并且您有很多方法可以根据您的环境进行更改。
Background:
* def starter = read('start-mock.js')
* def port = karate.env == 'mock' ? starter() : 8080
* url 'http://localhost:' + port + '/cats'
这回答了你的问题了吗 ?让我知道,我会将这个技巧添加到文档中!