版本: 空手道1.3.1, Maven 3.8, Java 11

下面是我调用空手道测试的方法

@SpringBootTest
@ActiveProfiles(value = "${spring.profiles.active:dev}")
public class ControllerIntegrationTest {

    @Value("${service-ui-rest.url}")
    private String serviceUiRestUrl;


    @Karate.Test
    Karate testThis(){
        System.setProperty("file.encoding", "UTF-8");
        return Karate
                .run("classpath:feature")
                .systemProperty("service-ui-rest.url",serviceUiRestUrl)
                .systemProperty("test.type","integration");
    }
}

在调试过程中,我发现以下逻辑GET Call HttpClientFactory何时返回ApacheHttpClient::New

https://github.com/karatelabs/karate/blob/628428c5f94772a40ae6f330f806388e6dfb0118/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java#L1238

https://github.com/karatelabs/karate/blob/628428c5f94772a40ae6f330f806388e6dfb0118/karate-core/src/main/java/com/intuit/karate/http/HttpClientFactory.java#L33

我想知道如何配置空手道以使用我拥有的:FeignClient或RestTemplate的Bean

我在https://github.com/gtnicol/karate-okhttp-signpost/blob/master/src/main/resources/karate-http.properties找到了类似的东西,但它使用的是空手道0.9.1

任何指点都将受到高度赞赏.

推荐答案

这应该可以回答您的问题:https://github.com/karatelabs/karate/tree/v1.3.0/karate-mock-servlet#switching-the-http-client

您可以通过实现HttpClient接口来完全定制空手道使用的HTTP客户端,这恰好非常简单.

如果您需要从头开始创建一个全新的HttpClient实现,MockHttpClient是一个很好的参考.这里有许多可能性,您可以添加对除Apache和Jersey之外的其他HTTP客户端的支持,或者模拟不基于Java Servlet的堆栈.

空手道默认设置为ApacheHttpClient,要在测试中更改此设置,您可以使用Runner"Builder"API设置HttpClientFactory.

karate-mock-servlet在1.4.0中被弃用时,这部分文档就丢失了,但现在希望这篇关于堆栈溢出的帖子可以成为人们需要的参考.也就是说,我认为您可能会期待一些"即插即用"的功能,但不是的,编写适配器需要做一些工作.不过,团队永远不需要这样做,使用HTTP客户端进行测试的全部目的是模拟最终用户如何使用您的API.

Java相关问答推荐

Saxon 9:如何从Java扩展函数中的net.sf.saxon.expr. XPathContent中获取声明的变量

无法在Java中将hhmmss格式的时间解析为LocalTime

@从类文件中删除JsonProperty—Java

空手道比赛条件

AlarmManager没有在正确的时间发送alert

JDK22执行repackage of goal org. springframework. boot:spring—boot—maven—plugin:3.2.3:repackage failed:unsupported class file major version 66—>

@ IdClass with @ Inheritance(策略= InheritanceType. SINGLE_TABLE)

有没有一种方法使保持活动设置专用于java.net.http.HttpClient的一个实例

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

我找不到&Quot;配置&的位置

只需最少的代码更改即可将版本号标记添加到日志(log)

Java中实现的归并排序算法给出ArrayIndexOutOfBound异常

试着做一个2x2的魔方求解算法,我如何找到解路径(DFS)?

如何让JVM在SIGSEGV崩溃后快速退出?

当使用不同的参数类型调用时,为什么围绕Objects.equals的类型安全包装不会失败?

Java System.getProperty在哪里检索user.home?

整数->;双取消框,但双->;int不';t开箱.为什么?

Java返回生成器的实现

Java 21保护模式的穷尽性

转换为JSON字符串时,日期按天递减-Java