10分钟上手Mockito for Dart:从安装到第一个模拟测试
10分钟上手Mockito for Dart:从安装到第一个模拟测试
【免费下载链接】mockitoMockito-inspired mock library for Dart项目地址: https://gitcode.com/gh_mirrors/moc/mockito
Mockito for Dart是一个受Mockito启发的模拟测试库,专为Dart开发者设计,帮助你轻松创建模拟对象、验证方法调用和设置返回值,让单元测试变得简单高效。
一、快速安装Mockito
在Dart项目中集成Mockito只需两步:
添加依赖
打开项目根目录的pubspec.yaml文件,在dev_dependencies下添加:dev_dependencies: mockito: ^5.4.0 build_runner: ^2.4.6 # 用于生成模拟代码安装依赖
执行以下命令安装依赖:dart pub get
二、创建第一个模拟测试
2.1 定义测试目标
假设我们要测试一个Cat类,包含eatFood和sound方法:
class Cat { String sound() => 'Meow'; void eatFood(String food) {} }2.2 生成模拟类
创建
test/cat_test.dart文件,使用@GenerateMocks注解:import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; import 'cat_test.mocks.dart'; @GenerateMocks([Cat]) void main() { late MockCat mockCat; setUp(() { mockCat = MockCat(); }); }运行代码生成命令:
dart run build_runner build生成的模拟类会保存在
test/cat_test.mocks.dart中。
2.3 验证方法调用
使用verify函数检查方法是否按预期调用:
test('验证猫叫了两次', () { mockCat.sound(); mockCat.sound(); verify(mockCat.sound()).called(2); // 断言sound()被调用2次 }); test('验证猫吃了鱼', () { mockCat.eatFood('fish'); verify(mockCat.eatFood('fish')).called(1); // 断言eatFood('fish')被调用1次 });三、常用功能实战
3.1 设置返回值
使用when指定模拟对象的方法返回值:
test('设置猫叫返回值', () { when(mockCat.sound()).thenReturn('Mew'); // 当调用sound()时返回'Mew' expect(mockCat.sound(), 'Mew'); verify(mockCat.sound()).called(1); });3.2 参数匹配器
灵活匹配方法参数,支持any、contains等匹配器:
test('使用参数匹配器', () { mockCat.eatFood('fish food'); // 验证参数包含'fish' verify(mockCat.eatFood(argThat(contains('fish')))).called(1); });3.3 捕获参数
通过captureAny捕获方法调用时的参数:
test('捕获食物参数', () { mockCat.eatFood('milk'); mockCat.eatFood('fish'); // 捕获所有调用的参数 final captured = verify(mockCat.eatFood(captureAny)).captured; expect(captured, ['milk', 'fish']); // 验证捕获的参数列表 });四、运行测试
执行以下命令运行所有测试:
dart test如果看到所有测试通过(显示All tests passed!),恭喜你已经掌握Mockito的基础用法!
五、进阶学习资源
- 官方示例:查看项目中的
example/example.dart,了解更多实际场景用法。 - 测试用例:参考
test/verify_test.dart和test/capture_test.dart中的详细测试示例。 - API文档:在
lib/src/mock.dart中查看完整的方法注释和高级功能说明。
通过Mockito,你可以轻松隔离依赖、验证行为,编写更健壮的Dart单元测试。现在就开始用它提升你的测试效率吧! 🚀
【免费下载链接】mockitoMockito-inspired mock library for Dart项目地址: https://gitcode.com/gh_mirrors/moc/mockito
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
