← ClaudeAtlas

flutter-testerlisted

Use when creating, writing, fixing, or reviewing tests in a Flutter project. Covers unit tests, widget tests, integration tests, Riverpod provider testing, and Mockito mocking. Provides Given-When-Then patterns, layer isolation strategies, and test setup for GetIt, SharedPreferences, and FakeDatabase.
izo/Ulk · ★ 1 · Testing & QA · score 68
Install: claude install-skill izo/Ulk
# Flutter Tester ## Overview Test each architectural layer in isolation using Given-When-Then structure. Always test both success and error paths. Never mock providers — override their dependencies instead. ## Reference Files Load the relevant file based on what you're testing: | What you're testing | Reference file | | --- | --- | | Repository, DAO, Service logic | `references/layer_testing_patterns.md` | | Widget UI, interactions, dialogs, navigation | `references/widget_testing_guide.md` | | Riverpod provider state, mutations, lifecycle | `references/riverpod_testing_guide.md` | ## Core Principles ### 1. Layer Isolation Test each layer against its own mocked dependencies: | Layer | What to test | What to mock | | --- | --- | --- | | **Repository** | Data coordination between sources | DAOs, APIs, Logger | | **DAO** | Database CRUD operations | Use real in-memory DB, mock Logger | | **Provider** | State management and transitions | Services, Repositories | | **Service** | Business logic and workflows | Repositories, Network clients | | **Widget** | UI behaviour and interactions | Provider dependencies (via overrides) | ### 2. Given-When-Then Structure ```dart test('Given valid data, When fetchUsers called, Then returns user list', () async { // Arrange (Given) when(mockDAO.fetchAll()).thenAnswer((_) async => expectedUsers); // Act (When) final result = await repository.fetchUsers(); // Assert (Then) expect(result, equals(expectedUsers)); verify(mo