10分钟上手Mockito for Dart:从安装到第一个模拟测试

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只需两步:

  1. 添加依赖
    打开项目根目录的pubspec.yaml文件,在dev_dependencies下添加:

    dev_dependencies: mockito: ^5.4.0 build_runner: ^2.4.6 # 用于生成模拟代码
  2. 安装依赖
    执行以下命令安装依赖:

    dart pub get

二、创建第一个模拟测试

2.1 定义测试目标

假设我们要测试一个Cat类,包含eatFoodsound方法:

class Cat { String sound() => 'Meow'; void eatFood(String food) {} }

2.2 生成模拟类

  1. 创建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(); }); }
  2. 运行代码生成命令:

    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 参数匹配器

灵活匹配方法参数,支持anycontains等匹配器:

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.darttest/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),仅供参考