Testing 带Dart函数的Mockito
我有一个我想模拟的方法,但是当我尝试验证这个方法的调用时。我得到一个错误,上面写着:Testing 带Dart函数的Mockito,testing,dart,mockito,flutter,flutter-test,Testing,Dart,Mockito,Flutter,Flutter Test,我有一个我想模拟的方法,但是当我尝试验证这个方法的调用时。我得到一个错误,上面写着: Used on a non-mockito object 以下是简化代码: test('test',() { MockReducer reducer = new MockReducer(); verify(reducer).called(0); }); class MockReducer extends Mock { call(state, action) => state; } 为什么
Used on a non-mockito object
以下是简化代码:
test('test',() {
MockReducer reducer = new MockReducer();
verify(reducer).called(0);
});
class MockReducer extends Mock {
call(state, action) => state;
}
为什么我不能这样做呢?我想你有三个问题:
redux.dart
,您可以实现ReducerClass
(通过实现调用充当Reducer
函数)
verifyNever
而不是verify(X)。调用(0)
class MockReducer extends Mock implements ReducerClass {}
main() {
test('should be able to mock a reducer', () {
final reducer = new MockReducer();
verifyNever(reducer.call(any, any));
});
}
如果您只想创建一个模拟函数作为小部件测试环境上的onTap使用,可以使用mockito执行以下操作:
abstract class MyFunction {
void call();
}
class MyFunctionMock extends Mock implements MyFunction {}
测试:
根据您提供的链接,我只是简单地创建了一个新函数,该函数与我在没有Mockito的情况下所做的完全相同。这似乎是最干净的解决办法。谢谢您甚至可以删除
。调用。这很有效!我以前尝试过在测试环境中使用模拟函数,这是通过构造函数模拟和测试传递给小部件的方法的最简单、最干净的方法。
void main() {
final mock = MyFunctionMock();
...
// This is inside the the testWidgets callback
await tester.pumpWidget(
widgetToBeTested(
item: registeredListItem,
onTap: mock,
),
);
//Logic to tap the widgetToBeTested
verify(mock()).called(1);
}