mockito

Featured

Use when generating mocks, stubbing methods, verifying interactions, capturing arguments, or choosing between mocks, fakes, and real objects (Mockito).

Testing & QA 619 stars 60 forks Updated today MIT

Install

View on GitHub

Quality Score: 95/100

Stars 20%
93
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Mockito Skill This skill defines how to correctly use the `mockito` package for mocking in Dart and Flutter tests. --- ## 1. Mock vs. Fake vs. Real Object | Use | When | |---|---| | **Real object** | Prefer over mocks when practical. | | **Fake** (`extends Fake`) | Lightweight custom implementation; override only the methods you need. Prefer over mocks when you don't need interaction verification. | | **Mock** (`extends Mock`) | Only when you need to **verify interactions** (call counts, arguments) or stub dynamic responses. | - **Data models** should not be mocked if they can be constructed with stubbed data. - Only use mocks if your test has `verify` assertions; otherwise prefer real or fake objects. --- ## 2. Generating Mocks ```dart @GenerateMocks([MyClass]) // or for nice mocks (return simple legal values for missing stubs): @GenerateNiceMocks([MockSpec<MyClass>()]) void main() { ... } ``` ```bash dart run build_runner build ``` - Only annotate files under `test/` for mock generation by default. - Use a `build.yaml` if you need to generate mocks outside of `test/`. - Never add `@override` methods or implementations to a class extending `Mock`. - Never stub responses in a mock's constructor or inside the mock class — always stub in your tests. --- ## 3. Stubbing ```dart final mock = MockCat(); // Return a value when(mock.sound()).thenReturn('Meow'); // Throw an error when(mock.sound()).thenThrow(Exception('No sound')); // Calculate response at call time ...

Details

Author
evanca
Repository
evanca/flutter-ai-rules
Created
1 years ago
Last Updated
today
Language
Shell
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category