Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计通过

unit-test-wiremock-rest-apiunit 测试 wiremock rest API

Agent Skill

用于辅助 API 设计、接口文档、请求响应结构和服务集成说明。它适合让 Agent 梳理 endpoint、生成 OpenAPI 草稿、检查字段命名、整理错误码或辅助前后端联调。使用时需要确认真实业务语义、鉴权方式、分页和错误处理规则;涉及生成接口文档时,应避免凭空补字段,最好从现有代码、schema 或接口样例中提取事实。

总安装

16,872

周安装

703

GitHub Stars

229

下载量

5,624
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:unit-test-wiremock-rest-api(unit 测试 wiremock rest API)
来源仓库:https://github.com/giuseppe-trisciuoglio/developer-kit
仓库路径:skills/unit-test-wiremock-rest-api
安装命令:
npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill unit-test-wiremock-rest-api
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill unit-test-wiremock-rest-api

简介

使用 WireMock HTTP 模拟和请求验证对外部 REST API 集成进行单元测试。

  • 具有可配置状态代码、标头和 JSON 正文的存根 HTTP 响应;验证请求详细信息,包括标头、查询参数和请求正文
  • 测试错误场景(4xx/5xx 响应、超时、格式错误的响应),无需调用真实的 API 或达到速率限制
  • 使用动态端口分配以避免并行测试执行中的冲突;通过 JUnit 5 扩展注册在测试之间自动清理
  • 支持通过 URL、HTTP 方法、标头和 JSON 路径表达式进行请求匹配,以实现精确的存根定位

SKILL.md

Unit Testing REST APIs with WireMock

Overview

Patterns for testing external REST API integrations with WireMock: stubbing responses, verifying requests, error scenarios, and fast tests without network dependencies.

When to Use

  • Testing services calling external REST APIs
  • Stubbing HTTP responses for predictable test behavior
  • Testing error scenarios (timeouts, 5xx errors, malformed responses)
  • Verifying request details (headers, query params, request body)

Instructions

  1. Add dependency: WireMock in test scope (Maven/Gradle)
  2. Register extension: @RegisterExtension WireMockExtension with dynamicPort()
  3. Configure client: Use wireMock.getRuntimeInfo().getHttpBaseUrl() as base URL
  4. Stub responses: stubFor() with request matching (URL, headers, body)
  5. Execute and assert: Call service methods, validate results with AssertJ
  6. Verify requests: verify() to ensure correct API usage

If stub not matching: Check URL encoding, header names, use urlEqualTo for query params.

If tests hanging: Configure connection timeouts in HTTP client; use withFixedDelay() for timeout simulation.

If port conflicts: Always use wireMockConfig().dynamicPort().

Examples

Maven Dependencies

<dependency>
  <groupId>org.wiremock</groupId>
  <artifactId>wiremock</artifactId>
  <version>3.4.1</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.assertj</groupId>
  <artifactId>assertj-core</artifactId>
  <scope>test</scope>
</dependency>

Basic Stubbing and Verification

import com.github.tomakehurst.wiremock.junit5.WireMockExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static org.assertj.core.api.Assertions.assertThat;

class ExternalWeatherServiceTest {

  @RegisterExtension
  static WireMockExtension wireMock = WireMockExtension.newInstance()
    .options(wireMockConfig().dynamicPort())
    .build();

  @Test
  void shouldFetchWeatherDataFromExternalApi() {
    wireMock.stubFor(get(urlEqualTo("/weather?city=London"))
      .withHeader("Accept", containing("application/json"))
      .willReturn(aResponse()
        .withStatus(200)
        .withHeader("Content-Type", "application/json")
        .withBody("{\"city\":\"London\",\"temperature\":15,\"condition\":\"Cloudy\"}")));

    String baseUrl = wireMock.getRuntimeInfo().getHttpBaseUrl();
    WeatherApiClient client = new WeatherApiClient(baseUrl);
    WeatherData weather = client.getWeather("London");

    assertThat(weather.getCity()).isEqualTo("London");
    assertThat(weather.getTemperature()).isEqualTo(15);

    wireMock.verify(getRequestedFor(urlEqualTo("/weather?city=London"))
      .withHeader("Accept", containing("application/json")));
  }
}

See references/advanced-examples.md for error scenarios, body verification, timeout simulation, and stateful testing.

Best Practices

  • Dynamic port: Prevents conflicts in parallel test execution
  • Verify requests: Ensures correct API usage by the client
  • Test errors: Cover timeouts, 4xx, 5xx scenarios
  • Focused stubs: One concern per test
  • Auto-reset: @RegisterExtension resets WireMock between tests
  • Never call real APIs: Always stub third-party endpoints

Constraints and Warnings

  • Dynamic ports required: Fixed ports cause parallel execution conflicts
  • HTTPS testing: Configure WireMock TLS settings if testing TLS connections
  • Stub precedence: More specific stubs take priority over general ones
  • Performance: WireMock adds overhead; mock at client layer for faster tests
  • API changes: Keep stubs synchronized with actual API contracts

References

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

39.26%
按下载量换算2,208

Claude

29.35%
按下载量换算1,651

Cursor

17.99%
按下载量换算1,012

Gemini CLI

9.55%
按下载量换算537

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills