flutter - 未找到与此方法调用的参数匹配的存根:导航器
问题描述
我正在尝试模拟 AutoRouteObserver() 类来测试我的项目中的导航,但是当我在 navigatorObservers 参数中使用模拟实例时,出现以下错误:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following MissingStubError was thrown building AutoRouteNavigator(state:
_AutoRouteNavigatorState#0b446):
'navigator'
No stub was found which matches the arguments of this method call:
navigator
Add a stub for this method using Mockito's 'when' API, or generate the mock for
MockNavigationHistoryObserver with 'returnNullOnMissingStub: true'.
The relevant error-causing widget was:
AutoRouteNavigator
这是我的代码:
void main() async {
var authManagerMock = getAndRegisterAuthManagerMock();
var mockRepository = getAndRegisterRepositoryMock();
final _appRouter = AppRouterAutoRoute(authGuard: AuthGuard());
var mockAutoRouterObserver = MockAutoRouteObserver();
Widget makeTestableWidget() {
when(authManagerMock.isLoggedIn()).thenAnswer((realInvocation) => false);
return MaterialApp.router(
routerDelegate: AutoRouterDelegate(_appRouter, navigatorObservers: () => [mockAutoRouterObserver]),
routeInformationParser: _appRouter.defaultRouteParser());
}
testWidgets('Tapping forgot password text', (WidgetTester tester) async {
await tester.pumpWidget(makeTestableWidget());
await tester.pump();
Finder forgetPasswordButtonFinder = find.byKey(Key('forget-password-button'));
expect(find.byKey(Key('forget-password-button')), findsOneWidget);
await tester.tap(forgetPasswordButtonFinder);
await tester.pumpAndSettle();
expect(find.byKey(Key('forget-password-button')), findsNothing);
expect(find.byKey(Key('submit')), findsOneWidget);
verify(mockAutoRouterObserver.didPush(any, any));
});
}
解决方案
推荐阅读
- swift - 如何通过通用属性比较结构
- asp.net-identity - SecurityStamp 不会在密码更改时更新
- javascript - Twilio Chat:尝试在频道上获取会员可达性的通知
- html - nth-of-type,除了标题
- javascript - 如何在反应应用程序中从 clientJS 获取浏览器指纹?
- python - 熊猫数据框检查列是否包含另一列中存在的字符串
- sql - 使用 txid 获取最新的未处理、更新的行
- python - 如何动态计算熊猫系列的平均值?
- javascript - 我想不通的编码挑战
- android - How can I start a new activity within a separate process without losing onActivityResult callback?