2.3 KiB
2.3 KiB
name, description
| name | description |
|---|---|
| GenerateIntegrationTest | Hướng dẫn tạo Integration Test (người thật việc thật) sử dụng WebApplicationFactory và Testcontainers. |
GenerateIntegrationTest Skill
Khi user yêu cầu tạo Integration Test để kiểm tra API endpoint từ đầu đến cuối, bạn cần sinh ra code theo hướng dẫn sau:
Mục đích
- Test xem các mảnh ghép lắp vào ghép với nhau có chạy đúng không.
- Flow: Client gọi API -> Middleware -> Controller -> CQRS Handler/Service -> Ghi/Đọc Database thật.
Hướng dẫn thực hiện
-
Setup WebApplicationFactory:
- Tự động setup
WebApplicationFactory<Program>(tạo một test server ngay trong RAM của .NET). - Override cấu hình ứng dụng nếu cần thiết (ví dụ thay đổi ConnectionString trỏ sang test container).
- Tự động setup
-
Setup Testcontainers (Real Database):
- Sử dụng thư viện
Testcontainers(hoặc cấu hình tương tự) để tự động spin up một Docker container chứa Database thật (ví dụ: PostgreSQL, SQL Server). - Đảm bảo database container này được start trước khi chạy test và tự động xóa (dispose) sau khi test xong. Tránh dùng SQLite in-memory vì hay bị lỗi vặt và không tương đương với database production.
- Sử dụng thư viện
-
Viết kịch bản Test gọi API (Arrange - Act - Assert):
- Tạo đối tượng
HttpClienttừWebApplicationFactory.CreateClient(). - Arrange: Chuẩn bị payload data dạng JSON objects hoặc tạo trước data base records nếu là API GET/PUT/DELETE.
- Act: Gọi thẳng vào API endpoint tương ứng bằng code. VD:
await client.PostAsJsonAsync("/api/v1/samples", payload);. - Assert: Kiểm tra kết quả trả về:
- Check HTTP Status: có phải
200 OKhay400 Bad Requestkhông. - Deserialize response body để check chính xác object.
- (Tùy chọn) Query thẳng vào database container xem bản ghi đã được sinh ra/cập nhật thật chưa.
- Check HTTP Status: có phải
- Tạo đối tượng
Định dạng file đầu ra
- Đường dẫn: Chứa trong project test tương ứng như
tests/MyNewProjectName.IntegrationTests/Controllers/.... - Tên file:
[ControllerName]Tests.cs(ví dụ:OrdersControllerTests.cs).