flutter - 如何从颤振单例类创建模拟对象?
问题描述
我正在尝试为我的颤振应用程序编写单元测试。我正在使用Mockito 包。我对新颤振版本的空安全要求有一些问题。Mockito 需要新的颤振版本,但我使用的许多其他包不兼容,所以我只是把// @dart=2.9
我所有的文件放在首位。不确定这是否可能是一些问题的根源。
所以在这里我想测试当在onPressedSubmit
SliderRatingPage 上调用该方法时(这就是用户点击某个按钮时发生的情况),应用程序将调用数据库。具体来说,它应该调用类中insertRow
定义的方法DatabaseHelper
。
在这里,我希望使用注释测试用例@GenerateMocks([DatabaseHelper])
将有效地模拟对 DatabaseHelper 类的每次调用,因此我可以verify
用来测试该insertRow
方法是否被调用,就像在下面的代码中所写的那样。但这DatabaseHelper
显然是一个非模拟对象,因为这是我在尝试运行测试时收到的错误消息。
那么编写符合我预期的测试的正确方法是什么?
// @dart=2.9
import 'package:test/test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:my_app/uidesign/page_slider_rating.dart'; //SliderRatingPage class
import 'package:my_app/database/database_helpers.dart'; //DatabaseHelper class, singleton
@GenerateMocks([DatabaseHelper])
void main() {
test('onPressedSubmit calls database.', () async {
SliderRatingPage page = SliderRatingPage();
page.createState().onPressedSubmit();
verify(DatabaseHelper.instance.insertRow(any));
});
}
解决方案
推荐阅读
- javascript - React.js:我使用了 setstate 但它仍然不能同时重新渲染
- c++ - 我需要一些 Makefile 魔法解释
- python - python索引的“偏移”函数
- python - 如何根据条件合并两个不同大小的 Pandas DataFrame
- pytorch - 第一个 epoch 后模型过拟合
- django - 如何在 Django Admin Dashboard 中更改背景颜色
- php - 在 WooCommerce 中自动向客户发送电子邮件发票以进行付款
- angular - Angular - 如何在下一个按钮上验证 Angular 材质
- .net - Ocelot 上游路径需要文件名
- python - 405 方法不允许,Django + ngrok,仅在我的本地机器上