📝
Testing REST APIs

Contract Testing

Consumer-Driven Contracts (Pact)
💡 Contract testing, EK RESTAURANT aur SUPPLIER ke BEECH, EK "SUPPLY AGREEMENT" jaisa hai — SUPPLIER (API PROVIDER), AGREE karta hai, KI, WOH, EXACTLY, JO, RESTAURANT (CONSUMER) NE, MAANGA hai, WOHI, DEGA — CHANGES, DONO SIDES, "TEST" ki jaati hain, AGREEMENT ke, AGAINST.

Microservices ARCHITECTURE mein, EK SERVICE (CONSUMER), EK DUSRI SERVICE (PROVIDER) ki, API PAR, DEPEND karti hai. TRADITIONAL, INTEGRATION TESTS, SLOW aur BRITTLE HOTE hain (POORE SYSTEM, EK SAATH, RUN karna PADТA hai). CONTRACT TESTING (jaise Pact), EK, LIGHTER-WEIGHT, ALTERNATIVE hai.

CONSUMER, APNI EXPECTATIONS (jaise, "MUJHE, /products/1 SE, EK name FIELD, STRING TYPE mein, CHAHIYE"), EK "CONTRACT" FILE mein, DEFINE karta hai. PROVIDER, APNI CI PIPELINE mein, IS CONTRACT ke, AGAINST, TEST hota hai — AGAR, PROVIDER, KUCH BREAK karta hai, JO, CONSUMER ko, ZAROORI hai, TEST, FAIL ho jaata hai — POORA, END-TO-END, SYSTEM, RUN kiye BINA.

// Consumer side — expectation DEFINE karna (Pact):
@Pact(consumer = "OrderService", provider = "ProductService")
public RequestResponsePact createPact(PactDslWithProvider builder) {
    return builder
        .given("product with id 1 exists")
        .uponReceiving("a request for product 1")
        .path("/api/products/1")
        .method("GET")
        .willRespondWith()
        .status(200)
        .body(newJsonBody(o -> o.stringType("name").numberType("price")).build())
        .toPact();
}

// Provider side, CI mein, IS CONTRACT ke against, AUTOMATICALLY, VERIFY hota hai
📝
Contract testing, EK RESTAURANT aur SUPPLIER ke BEECH, EK "SUPPLY AGREEMENT" jaisa hai — SUPPLIER (API PROVIDER), AGREE karta hai, KI, WOH, EXACTLY, JO, RESTAURANT (CONSUMER) NE, MAANGA hai, WOHI, DEGA — CHANGES, DONO SIDES, "TEST" ki jaati hain, AGREEMENT ke, AGAINST.
1 / 2
⚡ झट से Recap
  • Contract testing (Pact) = consumer expectations, DEFINE + provider, INKE AGAINST, verify hota hai
  • Full, end-to-end, integration tests se, LIGHTER, FASTER
  • Microservices architectures mein, "integration confidence" deता hai
इस page में (2 subtopics)

PROVIDER, TEAM, APNI, CI, PIPELINE mein, EK, "PACT BROKER" SE, SAARE, PUBLISHED, CONTRACTS, FETCH karti hai, aur, HAR, EK ke, AGAINST, AUTOMATICALLY, VERIFY hoती hai — AGAR, KOI, CONTRACT, BREAK hota hai, BUILD, FAIL ho jaata hai, DEPLOYMENT SE, PEHLE.

💡Tip: Pact BROKER, EK, CENTRAL, "REGISTRY" hai, JAHA, CONSUMER, CONTRACTS, PUBLISH karte hain, aur, PROVIDERS, INHE, DISCOVER karte hain — MANUAL, FILE-SHARING ki, ZAROORAT NAHI.

Pact CLI ka, can-i-deploy COMMAND, DEPLOYMENT SE, PEHLE, CHECK karta hai, KI, CURRENT, VERSION (CONSUMER YA, PROVIDER), COMPATIBLE hai, YA, NAHI, DOOSRI, SIDE ki, DEPLOYED, VERSION SE — INCOMPATIBLE, DEPLOYMENTS, PEHLE, HI, ROK diye JAATE hain.

  • can-i-deploy = PRE-deployment, compatibility check
  • Incompatible changes, DEPLOYMENT SE, PEHLE, HI, CATCH ho jaate hain