Κρατήστε τα tests ντετερμινιστικά με σαφείς containers.

Τα περισσότερα test scenarios αντιστοιχίζονται απευθείας στα APIs του ProviderContainer: read, invalidate, refresh, listen και overrides ανά provider instance.

Test Strategy

Χωρίστε τα tests σε καθαρά container tests και widget integration tests.

Pure Dart

Χρησιμοποιήστε απευθείας το ProviderContainer για assertions read/invalidate/refresh

Overrides

Override-άρετε ανά provider instance με overrideWith / overrideWithValue

Widget tests

Κάντε inject το εξωτερικό container και dispose-άρέτέ το ρητά

Tip

Το ProviderContainer.listen δεν emit-άρει την αρχική τιμή εκτός αν οριστεί fireImmediately: true.

Εντολή δοκιμής και checklist

Τρέξτε όλη τη σουίτα και βεβαιωθείτε ότι δεν υπάρχουν εκκρεμή timer leaks σε 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.

Παράδειγμα: override ανά όρισμα

Οι providers τύπου οικογένειας override-άρονται ανά instance που δημιουργείται από τη factory function σας.

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();
Αυτό το μοτίβο ακολουθεί το README και τα upstream tests στο αποθετήριο miniriverpod.
Τα widget tests πρέπει να αποσυνδέουν τα widgets πριν αποδεσμεύσουν εξωτερικά containers.
Χρησιμοποιήστε fake_async για να επικυρώσετε τις καθυστερήσεις autoDispose και τη συμπεριφορά keepAlive.

Επόμενα βήματα

API Reference

Ανοίξτε γρήγορες υπογραφές για ProviderContainer, Ref, AsyncValue και mutation APIs.

Open API Reference

Back to Overview

Επιστρέψτε στον πλήρη χάρτη τεκμηρίωσης του miniriverpod.

Open Overview