Tutorials Microservices with .NET
Preparing ASP.NET Core Web API for CI/CD — Complete Guide
Preparing ASP.NET Core Web API for CI/CD — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of Microservices with .NET on Toolliyo Academy.
On this page
Microservices with .NET · Lesson 98 of 120
Contract Testing
Beginner ✓ → Intermediate ✓ → Advanced ✓ → Professional
Professional · 4 — Real projects · ~10 min · Module 10: Observability and Testing
What is this?
Contract Testing is a key part of ShopNest Cloud-Native — your .NET microservices learning project. In plain terms: it helps User Service work correctly in a distributed system where each app deploys and scales on its own.
Why should you care?
You care about this when a checkout fails and you must trace it across Gateway → Order → Payment → RabbitMQ in minutes, not days.
See it live — copy this example
Create a Web API project (dotnet new webapi), paste the code, then run dotnet run.
[Fact]
public async Task PlaceOrder_Publishes_OrderPlacedEvent()
{
await using var factory = new WebApplicationFactory<Program>();
// assert message published or HTTP 201
}
Run Example »
Edit the code and click Run — like W3Schools Try it Yourself.
What happened?
- The example shows Contract Testing wired into User Service.
- Read each line, run it locally, then change one setting and observe what breaks or improves.
- That is how teams learn in production too — small experiments, not big bang rewrites.
Try it yourself
- Open or create the ShopNest project area for User Service.
- Apply the Contract Testing pattern from the lesson example.
- Run dotnet build && dotnet run (or docker compose up when the lesson uses containers).
- Change a string or number in the example and run again — predict the output first.
- Break the code on purpose (remove a semicolon), read the compiler error, then fix it.
Remember
Contract Testing connects to User Service in ShopNest Cloud-Native. Practice by editing the example yourself — do not only read. Move on when you can explain this topic in your own words without looking.
Real-world: HDFC-style fund transfer
Transfer, ledger, fraud check, and SMS run as separate services with idempotency keys. Saga compensates if fraud blocks after debit.
Outcome: Salary-day load handled without duplicate debits or shared-database locks.