# Provider scope, Fake và fake_async

> Scope quyết định vòng đời, ProviderNotFoundException khi nào là tin tốt, Fake viết tay thay mock framework, và test ViewModel có Timer bằng fake_async.

- URL: https://dantech.academy/courses/flutter-mobile-101/04-provider-di/lesson-03-scoping-and-testing
- Khóa học: [Flutter Mobile 101](https://dantech.academy/courses/flutter-mobile-101.md)
- Module: Provider Và Dependency Injection
- Thời lượng: 18 phút
- Độ khó: beginner
- Truy cập: Dành cho học viên

## Mục tiêu

- Quyết định được đặt provider ở gốc app hay ở một màn, dựa trên vòng đời của dữ liệu
- Viết Fake bằng tay implements interface thật và test ViewModel không cần widget
- Test được hành vi phụ thuộc thời gian bằng fake_async, chính xác tới mili-giây

## Nội dung bài học

1. Scope: Provider Chỉ Nhìn Xuống
2. ViewModel Sống Trong Màn Của Nó
3. ProviderNotFoundException Là Scoping Đang Chạy Đúng
4. Khi Nào KHÔNG Scope Theo Màn
5. Fake Viết Tay, Không Mock Framework
6. Test ViewModel Có Timer: fake_async
7. Test Chứng Minh dispose() Làm Việc

## Học cùng AI agent

Toàn bộ bài học dành cho học viên của khóa. Học viên mở bài trên web và bấm nút **Markdown** để copy toàn bài, rồi dán vào Claude, ChatGPT, Cursor hoặc agent bạn đang dùng. Nhanh hơn: tạo token ở `/profile/ai-agents` và agent đọc bài trực tiếp qua MCP.

- [Đăng ký khóa học](https://dantech.academy/flutter-mobile-101/checkout)

---

- Bài trước: [Dependency injection và composition root](https://dantech.academy/courses/flutter-mobile-101/04-provider-di/lesson-02-injecting-dependencies.md)
- Bài tiếp theo: [Navigator stack và screen state machine](https://dantech.academy/courses/flutter-mobile-101/05-navigation/lesson-01-screen-state-machine.md)
