Files
Ho Ngoc Hai 76d75c753b Migrate
2026-05-23 18:37:02 +07:00

59 lines
1.9 KiB
Markdown

# GoodGo Platform — Pact Contract Tests
EN: Consumer-driven contract tests for microservice boundaries using Pact.io v3.
VI: Contract tests consumer-driven cho ranh giới microservice sử dụng Pact.io v3.
## Covered Boundaries
| Consumer | Provider | Test File |
|----------|----------|-----------|
| OrderService | CatalogService | `order-catalog.consumer.test.ts` |
| OrderService | WalletService | `order-wallet.consumer.test.ts` |
| OrderService | InventoryService | `order-inventory.consumer.test.ts` |
| MerchantService | IamService | `merchant-iam.consumer.test.ts` |
| PromotionService | OrderService | `promotion-order.consumer.test.ts` |
## Running Tests
```bash
cd tests/contract
pnpm install
pnpm test
```
EN: Pact files are generated in `tests/contract/pacts/`.
VI: Pact files được tạo trong `tests/contract/pacts/`.
## Provider Verification (CI)
EN: Each provider service must verify the Pact it receives. Add to the provider's CI workflow:
VI: Mỗi provider service phải verify Pact nhận được. Thêm vào CI workflow của provider:
```csharp
// EN: In provider test project — PactNet provider verification
// VI: Trong provider test project — PactNet provider verification
[Fact]
public async Task EnsureProviderApiHonoursPactWithOrderService()
{
var config = new PactVerifierConfig
{
Outputters = new List<IOutput> { new XUnitOutput(_output) },
};
await new PactVerifier(config)
.ServiceProvider("CatalogService", new Uri("http://localhost:5020"))
.WithPactFile(new FileInfo("../../../../tests/contract/pacts/OrderService-CatalogService.json"))
.WithProviderStateUrl(new Uri("http://localhost:5020/provider-states"))
.Verify();
}
```
## Publishing Pacts (Optional — Pact Broker)
```bash
pnpm pact:publish
```
EN: Requires `PACT_BROKER_URL` and `PACT_BROKER_TOKEN` environment variables.
VI: Cần các biến môi trường `PACT_BROKER_URL``PACT_BROKER_TOKEN`.