Giữ cho kiểm thử có tính xác định bằng các container rõ ràng.

Hầu hết các kịch bản kiểm thử ánh xạ trực tiếp tới các API của ProviderContainer: read, invalidate, refresh, listen và các override theo từng provider instance.

Test Strategy

Tách các kiểm thử thành kiểm thử container thuần túy và kiểm thử tích hợp widget.

Pure Dart

Dùng trực tiếp ProviderContainer cho các khẳng định read/invalidate/refresh

Overrides

Override từng provider instance bằng overrideWith / overrideWithValue

Widget tests

Chèn container bên ngoài và dispose nó một cách rõ ràng

Tip

ProviderContainer.listen không phát ra giá trị ban đầu trừ khi chỉ định fireImmediately: true.

Lệnh kiểm thử và danh sách kiểm tra

Chạy toàn bộ bộ kiểm thử và xác minh không có rò rỉ timer còn sót lại trong các kịch bản autoDispose.

Command

Checklist

- Dispose externally injected ProviderContainer in tearDown.
- Use fireImmediately: true when your listener assertions need initial state.
- For autoDispose tests, advance fake time beyond autoDisposeDelay.

Ví dụ: override theo đối số

Các provider kiểu family được override theo từng instance do hàm factory của bạn tạo ra.

class ProductById extends Provider<Product> {
  ProductById(this.id) : super.args((id,));
  final String id;

  @override
  Product build(ref) {
    final repo = ref.watch(productRepoProvider);
    return repo.fetch(id);
  }
}

final container = ProviderContainer(
  overrides: [
    productByIdProvider('a').overrideWithValue(const Product(id: 'a', name: 'stub')),
  ],
);

// assert and cleanup
container.dispose();
Mẫu này phản ánh README và các bài kiểm thử upstream trong kho miniriverpod.
Kiểm thử widget nên unmount widget trước khi dispose các container bên ngoài.
Dùng fake_async để xác minh độ trễ autoDispose và hành vi keepAlive.

Buoc tiep theo

API Reference

Mở các chữ ký nhanh cho ProviderContainer, Ref, AsyncValue và các API mutation.

Open API Reference

Back to Overview

Quay lại bản đồ tài liệu đầy đủ cho miniriverpod.

Open Overview