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));
});
}