No stub was found which matches the arguments of this method call: navigator

Viewed 596

I'm trying to mock AutoRouteObserver() class to test navigiations in my project, but when I user the mocked instance in the navigatorObservers parameter I have the following Error:

══╡ 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 

here is my code:

 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));
  });
}
0 Answers
Related