如何在flutter中模拟运行时创建的对象?

问题描述 投票:0回答:1

我正在测试一个小部件,我需要在其中创建数据库类的对象。我想模拟该类的方法,如何模拟它?假设我在该小部件中有一个函数 saveData():

void saveData(int number) async {
    // ...
    MyDatabase db = MyDatabase();
    bool success = await db.insert(number);
    // ...
}

所以在这里,如果我单击小部件中的按钮,将调用 saveData 方法。我想模拟插入方法。我们怎样才能做到这一点?

我没有找到任何方法可以使用 mockito 包来做到这一点。

flutter mocking
1个回答
0
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.