Search code examples
flutterdartriverpodflutter-riverpod

How to override a provider with a Mock for ChangeNotifierProvider in Riverpod?


I am using flutter_riverpod: ^1.0.3

I am trying to write a widget test. I have ChangeNotifierProvider like the code below

final customerDataControllerProvider = ChangeNotifierProvider<CustomerDataController>((ref) {
  return CustomerDataController();
});

and here is the CustomerDataController class

class CustomerDataController with ChangeNotifier {
  //
}

I am using mocktail to create a mock like this

class MockCustomerDataController extends Mock implements CustomerDataController {}

and then I want to override the provider in a widget like this

ProviderScope(
  child: MaterialApp(home: const CreateOrderPage()),
  overrides: [
     customerDataControllerProvider.overrideWithProvider(MockCustomerDataController()), // I have error in here
  ],
)

but unfortunately, I am getting error like this

enter image description here

The argument type 'MockCustomerDataController' can't be assigned to the parameter type 'ChangeNotifierProvider'.

I am confused, how to 'replace' my CustomerDataController class to my Mock class ?


Solution

  • Try overrideWithValue, see Testing.