标签: wiremock

模块版本冲突。模块 [groovy-xml 已在版本 4.xx 中加载,而您正在尝试加载版本 3.xx

我正在努力为 springboot Rest api 设置wiremock,并使用 spring cloud 中的放心和 spring-cloud-starter-contract-stub-runner 。当我运行示例集成测试时,我遇到模块冲突错误

rest-assured wiremock spring-cloud

8
推荐指数
1
解决办法
1万
查看次数

如何在Spring Boot应用程序中的Feign客户端上使用WireMock?

我有一个使用Feign客户端的课程.之前我使用过Mockito并为Feign客户端中的每个方法调用提供了存储响应.现在我想使用WireMock,以便我可以看到我的代码正确处理不同类型的响应代码.我该怎么做呢?我无法弄清楚如何在测试中连接我的Feign客户端,并将其连接起来,以便它使用Wiremock而不是我在我的application.yml文件中设置的URL .任何指针都将非常感激.

java spring spring-boot wiremock feign

7
推荐指数
1
解决办法
7118
查看次数

Wiremock CORS 不起作用

我已经有效地使用了 wiremock 一段时间了,我想启用对模拟 API 的 CORS 访问。

我试过在响应头中设置 Access-Control-Allow-Origin: * 和其他头,但都无济于事。

这是我拥有的映射示例:

{
    "request": {
        "method": "POST",
        "urlPattern": "/api/v2/general/login[\\/\\&\\?]*",
        "bodyPatterns": [{
            "equalToJson": "{\"password\":\"password\",\"username\":\"john@cougar.com\"} ",
            "jsonCompareMode": "LENIENT",
            "ignoreArrayOrder" : true,
            "ignoreExtraElements" : true
        }]
    },
    "response": {
        "status": 200,
        "headers": {
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin" : "*",
            "Access-Control-Allow-Methods" : "*",
            "Access-Control-Allow-Headers": "Accept, Content-Type, Content-Encoding, Server, Transfer-Encoding",
            "X-Content-Type-Options" : "nosniff",
            "x-frame-options" : "DENY",
            "x-xss-protection" : "1; mode=block"
        },
        "bodyFileName": "/login_response_johncougar.json"
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么导致 CORS 不起作用?

提前致谢。

rest cors wiremock

7
推荐指数
3
解决办法
6542
查看次数

Wiremock Stand alone - 如何使用请求数据操作响应

我试图使用Wiremock Standalone服务器实现POST REST调用的模拟.我面临这样的挑战,假设帖子正文包含一个"名称"字段及其值,应该在该POST调用的响应中返回相同的值.我的json文件如下所示:

{
"priority": 1,
"request": {
    "method": "POST",
    "urlPath": "/primeSlots",
    "bodyPatterns" : [ {
        "matchesJsonPath" : "{ \"things\": [ { \"name\": \"794363\" }] 
 }"
    } ]
 },
 "response": {
    "status": 200,
    "body": "{{$.things.name.value}}",
    "transformers": ["response-template"]
 }
}
Run Code Online (Sandbox Code Playgroud)

所以,我需要获得值,即794363,但使用上述方法无法在post响应体中获取它.

我也试过这个:

{
 "request": {
    "method": "POST",
    "urlPath": "/transform",
    "bodyPatterns": [
        {
            "matchesJsonPath" : "$.things[?(@.name =~ /[0-9]+/i)]"
        }
    ]
  },
  "response": {
    "status": 200,
    "body": "{\"responseName\": \"
   {{request.body.things.name.value}}\"}",
    "headers": {
        "Content-Type": "application/json"
    },
    "transformers": ["body-transformer"]
  }
 }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,即使我使用的regEx与请求中的任何数字相匹配,如何使用Wiremock独立的json文件在响应中返回相同的数字?谢谢.

java mocking stub wiremock

7
推荐指数
1
解决办法
6727
查看次数

使用 WireMock 对第三方服务的存根调用

我试图找到一种方法来通过WireMock. WireMock很容易模拟任何相对 URL,但是如果我们想要拦截从我们的节点发送到某个 3rd 方服务并返回预定义响应的 REST 调用呢?有没有可能做到这一点?

integration-testing stub stubbing wiremock

7
推荐指数
1
解决办法
3326
查看次数

如何指定可选的查询参数

我在合同中定义了查询参数。我需要这个参数是可选的:

method 'GET'
    url($(regex(urlRegex))) {
        queryParameters {
            parameter 'fitler': $(stub(regex(filterRegex)))
        }
}
Run Code Online (Sandbox Code Playgroud)

我希望这个合同适用于带有过滤器的 URL/my/sample/url?fitler=some-filter-expression和不带过滤器参数的URL /my/sample/url

我怎样才能做到这一点?这甚至可能吗?

java wiremock spring-cloud-contract

7
推荐指数
1
解决办法
1636
查看次数

在spring boot test中使用wiremock随机端口设置属性

我有一个Spring Boot测试,它使用wiremock来模拟外部服务.为了避免与并行构建冲突,我不想为wiremock设置固定端口号,并且希望依赖其动态端口配置.

该应用程序使用application.yml中external.baseUrl设置的property()(在src/test/resources下).但是我找不到以编程方式覆盖它的方法.我尝试过这样的事情:

    WireMockServer wireMockServer = new WireMockServer();
    wireMockServer.start();
    WireMock mockClient = new WireMock("localhost", wireMockServer.port());
    System.setProperty("external.baseUrl", "http://localhost:" + wireMockServer.port());
Run Code Online (Sandbox Code Playgroud)

但它不起作用,而是使用application.yml中的值.我看过的所有其他解决方案都使用静态值覆盖属性(例如在某些注释中),但在运行测试之前我不知道wiremock端口的值.

澄清:

弹簧引导和线缆都在随机端口上运行.那很好,我知道如何获得两个端口的价值.然而,wiremock应该模拟外部服务,我需要告诉我的应用程序如何到达它.我和这家external.baseUrl酒店一起做.我想在测试中设置的值当然取决于线程端口号.我的问题是如何在Spring启动测试中以编程方式设置属性.

java configuration spring-boot wiremock spring-boot-test

7
推荐指数
4
解决办法
8206
查看次数

Wiremock 与 Spring Boot JUnit 5 测试:测试运行后使用的地址

我们有一个 Spring Boot 2.2.0.RELEASE 应用程序,我们正在使用 WireMock 使用 JUnit 5 测试类对其进行测试。测试在本地运行良好,但在我们的 Jenkins 上,它在测试成功运行后失败并显示“地址已在使用中”消息。

这是我们的 spring 依赖项pom.xml

<properties>
    <java.version>11</java.version>
    <spring-cloud.version>Hoxton.RC2</spring-cloud.version>
    <spring-cloud-stream.version>3.0.0.RC2</spring-cloud-stream.version>
    <openapi.codegen.maven.plugin.version>4.1.2</openapi.codegen.maven.plugin.version>
    <jacoco-maven-plugin.version>0.8.4</jacoco-maven-plugin.version>
</properties>

<dependencies>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-stream-kafka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>

    <!-- Utils -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.openapitools</groupId>
        <artifactId>openapi-generator</artifactId>
        <version>${openapi.codegen.maven.plugin.version}</version>
    </dependency>

    <!-- Testing -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion> …
Run Code Online (Sandbox Code Playgroud)

spring-boot wiremock junit5

7
推荐指数
1
解决办法
5282
查看次数

WireMock 无法将 log4j 级别设置为 INFO 而不是 DEBUG

我正在使用 WireMock 运行 JUnit 测试用例。嵌入式 Jetty 服务器配置如下。

@Before
public void setup() {


    final ResponseTemplateTransformer theTemplateTransformer =
            new ResponseTemplateTransformer(false);

    templateTransformerName = theTemplateTransformer.getName();

    mWireMockServer = new WireMockServer(
            WireMockConfiguration
                    .options()
                    .notifier(new ConsoleNotifier(false))
                    .extensions(theTemplateTransformer));
    mWireMockServer.start();


}
Run Code Online (Sandbox Code Playgroud)

仅该方法的输出setup()就非常冗长,大约有 200 行长。它是这样开始的:

> Task :processResources
> Task :classes
> Task :compileTestJava
> Task :processTestResources
> Task :testClasses
> Task :test
log4j: Threshold ="null".
log4j: Level value for root is  [DEBUG].
log4j: root level set to DEBUG
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Setting property [immediateFlush] to …
Run Code Online (Sandbox Code Playgroud)

java junit log4j jetty wiremock

7
推荐指数
1
解决办法
2229
查看次数

有没有办法获取 SpringBoot 应用程序中加载的属性文件列表?

当我尝试执行mvn clean install. 作为构建的一部分,我们编译多个组件,最后使用wiremock 执行功能测试。它应该从功能测试配置文件中选择特定配置,并且应该从 application.properties 文件中选择默认属性。但由于某种原因,相同的代码无法找到这些文件中提到的属性。所以,只是想知道是否可以以某种方式获取在wiremock 期间加载的属性文件列表?这将提供一些线索,说明为什么没有选择预期的属性文件?

所有属性文件都位于内部:

src/main/resources
Run Code Online (Sandbox Code Playgroud)

并且,从测试课开始。

@ContextConfiguration(classes = SampleFTConfiguration.class)
public class SampleControllerTest{
//test method
}

@ComponentScan("com.xxx.xxx.xxx.ft")
@PropertySource("classpath:application-test.properties")
public class  SampleFTConfiguration{


}
Run Code Online (Sandbox Code Playgroud)

注意:我不希望任何人解决这个问题,我只想知道,我们是否可以获得加载的属性文件的名称?

java properties-file spring-boot wiremock spring-boot-2

7
推荐指数
1
解决办法
1万
查看次数