我正在测试一个小部件,我需要在其中创建数据库类的对象。我想模拟该类的方法,如何模拟它?假设我在该小部件中有一个函数 saveData():
void saveData(int number) async {
// ...
MyDatabase db = MyDatabase();
bool success = await db.insert(number);
// ...
}
所以在这里,如果我单击小部件中的按钮,将调用 saveData 方法。我想模拟插入方法。我们怎样才能做到这一点?
我没有找到任何方法可以使用 mockito 包来做到这一点。
Mockito 不可能为您做这件事。您将需要添加自己的级别间接寻址,以便您的测试代码可以用模拟版本替换
MyDatabase
实例。例如:
void saveData(int number, {MyDatabase? db}) async {
// ...
db ??= MyDatabase();
bool success = await db.insert(number);
// ...
}
然后测试代码可以做:
var db = MockMyDatabase();
when(db.insert(any));
await saveData(someNumber, db: db);
verify(db.insert(someNumber).called(1);