如何配置空手道以使用 FeignClient 或 RestTemplate 代替 ApacheHttpClient

问题描述 投票:0回答:1

版本: 空手道1.3.1, 行家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

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

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

任何指点将不胜感激

java spring-boot karate java-11 spring-boot-test
1个回答
0
投票

这应该回答您的问题: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 的堆栈。

Karate 默认为 ApacheHttpClient,要更改此设置以进行测试运行,您可以使用 Runner“构建器”API 设置 HttpClientFactory

karate-mock-servlet
在 1.4.0 中被弃用时,这部分文档就丢失了,但希望现在这篇关于堆栈溢出的文章可以成为人们需要的参考。

© www.soinside.com 2019 - 2024. All rights reserved.