某些情况下,单元测试可能会依赖需要从线上 web 服务或数据库中获取数据的类。这样会带来一些不便,原因如下:
访问线上服务或数据库会拖慢测试执行效率。
原本可以通过的测试可能会失败,因为 web 服务或数据库可能会返回不符合预期的结果。这种情况被称作“flaky test”。
使用线上 web 服务或数据库来测试很难覆盖全所有可能成功或失败的场景。
因此,最好不要依赖线上 web 服务或数据库,我们可以把这些依赖“模拟(mock)”出来。模拟(Mocks)允许我们仿造一个线上服务或数据库,并且可以根据条件返回特定结果。
通常来说,可以通过创建类的另一种实现来模拟(mock)这种依赖。类的另一种实现可以手写,也可以借助 Mockito
包,后者简单一些。
本篇教程介绍了 Mockito 包的基本用法,可以参考以下步骤:
使用步骤
1. 添加
mockito
和
test
依赖
2. 创建一个要测试的函数
3. 创建一个模拟了
http.Client
的测试文件
4. 给每一个条件写一个测试
5. 执行这些测试
更多信息可以查阅 Mockito package 的官方文档:https://pub.flutter-io.cn/packages/mockito。
1. 添加 package 依赖
为