Kev*_*Shi 7 testing dart flutter
我有一个小部件,它需要一个回调,当按下按钮时会调用该回调。我正在尝试测试按钮是否正确调用回调。
我尝试过嘲笑一个Function
班级:
class MockCallback extends Mock implements Function {
call() {}
}
Run Code Online (Sandbox Code Playgroud)
然后将模拟类的实例传递给我的小部件并模拟点击:
final mocked = MockCallback();
await tester.pumpWidget(
MyWidget(myCallback: mocked),
);
final clearButtonFinder = find.byType(IconButton);
await tester.tap(clearButtonFinder);
verify(mocked()).called(1);
Run Code Online (Sandbox Code Playgroud)
verify
这会导致调用时出现错误,显示Used on a non-mockito object
。如果我在模拟中放入打印语句call
,我可以看到水龙头确实在调用它。
如何验证在点击按钮时传递给我的小部件的回调是否被调用一次?
小智 1
可能这不是最好的解决方案 - 使用流:
final callbackCalled = BehaviorSubject<void>.seeded(null);
await tester.pumpWidget(
MyWidget(myCallback: () { callbackCalled.add(null); }),
);
//... actions to trigger the callback
await expectLater(callbackCalled, emitsInOrder(<void>[null, null]));
Run Code Online (Sandbox Code Playgroud)
您可以使用有意义的内容来代替“void”和“null”。
归档时间: |
|
查看次数: |
3254 次 |
最近记录: |