mcpField
R
rest-assured

rest-assured

github.com/claude-dev-suite测试与质量4654 次安装2 天前更新
代码仓库

关于 rest-assured

面向 Java HTTP API 测试的 REST Assured 速查技能,涵盖请求模式、断言、身份验证与故障排查。

主要功能

  1. 01GET 与 POST 请求模式
  2. 02状态码和响应体断言
  3. 03Bearer 与 Basic 身份验证
  4. 04Spring Boot 测试配置
  5. 05常见故障排查

适用场景

  1. 01测试 Java API 端点
  2. 02检查状态码和 JSON 字段
  3. 03验证经过身份验证的请求

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill rest-assured

安装后在 Claude Code 中输入/rest-assured确认已加载。

详细介绍

REST Assured - 快速参考

深入了解:使用 mcp__documentation__fetch_docs,并将技术标识设为:rest-assured,以获取完整文档。

不适合使用此技能的场景

  • 单元测试 - 使用 junit 和 Mockito 进行隔离测试
  • 端到端浏览器测试 - 使用 Selenium 或 Playwright
  • WebSocket 测试 - 使用专用的 WebSocket 测试工具
  • 非 Java 项目 - 使用针对相应语言的 HTTP 客户端
  • GraphQL API - 考虑使用专用的 GraphQL 测试工具

基本模式

GET 请求
given()
    .baseUri("http://localhost:8080")
    .contentType("application/json")
.when()
    .get("/api/v1/users/1")
.then()
    .statusCode(200)
    .body("name", equalTo("John"));
POST 请求
given()
    .contentType("application/json")
    .body("""
        {"name": "John", "email": "[email protected]"}
        """)
.when()
    .post("/api/v1/users")
.then()
    .statusCode(201)
    .body("id", notNullValue());
Spring Boot 集成
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class UserApiTest {
    @LocalServerPort
    private int port;

    @BeforeEach
    void setUp() {
        RestAssured.port = port;
    }

    @Test
    void shouldGetUsers() {
        given()
        .when().get("/api/v1/users")
        .then().statusCode(200);
    }
}
身份验证
// Bearer Token
given().header("Authorization", "Bearer " + token)

// Basic Auth
given().auth().basic("user", "pass")

常见 Hamcrest 匹配器

匹配器用法
equalTo(value)完全匹配
notNullValue()不为 null
hasSize(n)集合大小
containsString(str)字符串包含

反模式

反模式不利之处解决方案
将基础 URI 硬编码无法在不同环境间移植使用 RestAssured.baseURI 或配置
未设置 contentType请求可能失败或被错误解析POST/PUT 请求始终设置 contentType
忽略状态码错误可能被悄然忽略始终断言状态码
不使用路径参数难以阅读且容易出错使用 {id} 占位符
在单个测试中测试过多内容难以调试每个测试覆盖一个端点或场景
不测试身份验证存在安全漏洞测试身份验证标头和令牌
未验证响应架构违反 API 契约使用 JSON 架构验证

快速故障排除

问题可能原因解决方案
"Connection refused"服务未运行启动服务并验证端口
"Expected status 200 but was 500"API 错误或请求错误检查服务日志并验证请求体
"Cannot deserialize JSON"内容类型或请求体格式错误验证 Content-Type 标头并检查 JSON
身份验证失败缺少令牌或令牌错误检查 Authorization 标头
超时API 响应缓慢或网络问题增加超时时间或排查性能问题
"Path not found"URL 或方法错误验证端点是否存在并检查 HTTP 方法

参考文档

评论

支持 Markdown