api-contract-testing by aj-geddes/useful-ai-prompts
npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill api-contract-testing契约测试用于验证 API 在消费者和提供者之间是否遵守其契约。它确保服务的变更不会破坏依赖的消费者,而无需进行完整的集成测试。契约测试独立地验证请求/响应格式、数据类型和 API 行为。
最小工作示例:
// tests/pact/user-service.pact.test.ts
import { PactV3, MatchersV3 } from "@pact-foundation/pact";
import { UserService } from "../../src/services/UserService";
const { like, eachLike, iso8601DateTimeWithMillis } = MatchersV3;
const provider = new PactV3({
consumer: "OrderService",
provider: "UserService",
port: 1234,
dir: "./pacts",
});
describe("User Service Contract", () => {
const userService = new UserService("http://localhost:1234");
describe("GET /users/:id", () => {
test("returns user when found", async () => {
await provider
.given("user with ID 123 exists")
.uponReceiving("a request for user 123")
.withRequest({
method: "GET",
path: "/users/123",
headers: {
// ... (完整实现请参阅参考指南)
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
references/ 目录下的详细实现:
| 指南 | 内容 |
|---|---|
| Pact for Consumer-Driven Contracts | 用于消费者驱动契约的 Pact |
| OpenAPI Schema Validation | OpenAPI 模式验证 |
| JSON Schema Validation | JSON 模式验证 |
| REST Assured for Java | 用于 Java 的 REST Assured |
| Contract Testing with Postman | 使用 Postman 进行契约测试 |
| Pact Broker Integration | Pact Broker 集成 |
每周安装量
232
代码仓库
GitHub 星标数
126
首次出现
Jan 21, 2026
安全审计
安装于
opencode202
codex191
gemini-cli191
cursor181
claude-code172
github-copilot172
Contract testing verifies that APIs honor their contracts between consumers and providers. It ensures that service changes don't break dependent consumers without requiring full integration tests. Contract tests validate request/response formats, data types, and API behavior independently.
Minimal working example:
// tests/pact/user-service.pact.test.ts
import { PactV3, MatchersV3 } from "@pact-foundation/pact";
import { UserService } from "../../src/services/UserService";
const { like, eachLike, iso8601DateTimeWithMillis } = MatchersV3;
const provider = new PactV3({
consumer: "OrderService",
provider: "UserService",
port: 1234,
dir: "./pacts",
});
describe("User Service Contract", () => {
const userService = new UserService("http://localhost:1234");
describe("GET /users/:id", () => {
test("returns user when found", async () => {
await provider
.given("user with ID 123 exists")
.uponReceiving("a request for user 123")
.withRequest({
method: "GET",
path: "/users/123",
headers: {
// ... (see reference guides for full implementation)
Detailed implementations in the references/ directory:
| Guide | Contents |
|---|---|
| Pact for Consumer-Driven Contracts | Pact for Consumer-Driven Contracts |
| OpenAPI Schema Validation | OpenAPI Schema Validation |
| JSON Schema Validation | JSON Schema Validation |
| REST Assured for Java | REST Assured for Java |
| Contract Testing with Postman | Contract Testing with Postman |
| Pact Broker Integration | Pact Broker Integration |
Weekly Installs
232
Repository
GitHub Stars
126
First Seen
Jan 21, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode202
codex191
gemini-cli191
cursor181
claude-code172
github-copilot172