You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在各测试用例中指定使用的WireMock Stub JSON文件?

实现方案

1. 先关闭WireMock的自动存根加载

不管你用JUnit规则还是直接实例化WireMockServer,核心是禁用默认的mappings目录自动加载功能:

JUnit 5 搭配WireMockExtension的场景

注册扩展时添加disableMappingsLoading()配置:

@RegisterExtension
static WireMockExtension wireMock = WireMockExtension.newInstance()
    .options(wireMockConfig()
        .disableMappingsLoading() // 关键:阻止自动读取mappings目录
        .port(8080))
    .build();

JUnit 4 搭配WireMockRule的场景

在规则配置里加入同样的开关:

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig()
    .disableMappingsLoading()
    .port(8080));

直接使用WireMockServer实例

手动创建服务器时带上该配置:

WireMockServer wireMockServer = new WireMockServer(wireMockConfig()
    .disableMappingsLoading()
    .port(8080));
wireMockServer.start();

2. 每个测试用例手动加载指定存根

关闭自动加载后,就可以在单个测试里按需加载存根文件:

加载单个存根文件

调用loadMappingsFromFile()方法,传入目标存根的文件路径:

@Test
void testPaymentSuccess() {
    // 仅加载当前测试需要的存根
    wireMock.loadMappingsFromFile("src/test/resources/mappings/payment-success.json");
    
    // 编写你的测试逻辑...
}

加载多个存根文件

可以多次调用单个文件加载方法,或者把相关存根放到同一子目录,用loadMappingsFromDirectory()加载整个指定目录:

@Test
void testUserOperations() {
    // 加载用户服务相关的所有存根
    wireMock.loadMappingsFromDirectory("src/test/resources/mappings/user-service");
    
    // 执行测试逻辑...
}

3. 测试后清理存根(避免跨用例干扰)

为了防止不同测试的存根互相影响,建议在每个测试结束后清空所有存根配置:

@AfterEach
void cleanUp() {
    wireMock.resetAllMappings(); // 清空已加载的所有存根
}

针对WireMock独立服务器的场景

启动服务器时添加--disable-mappings-loading参数,关闭自动加载:

java -jar wiremock-jre8-standalone.jar --disable-mappings-loading --port 8080

然后在测试中通过Admin API手动上传存根,比如用curl:

curl -X POST --data-binary @src/test/resources/mappings/login-success.json http://localhost:8080/__admin/mappings

或者在代码里用AdminClient操作:

WireMockAdminClient adminClient = new WireMockAdminClient("localhost", 8080);
adminClient.loadMappingsFromFile(new File("src/test/resources/mappings/login-success.json"));

内容的提问来源于stack exchange,提问作者kcon123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 20:32:14