Tests
Modular provides tools make unit testing and route and injection integration easier. In this session we'll learn how to do this.
#
Injection TestThe safest way possible to inject dependencies is to test if the Bind construction happens as expected, then we'll need to check this through the test.
The modular_test package has some tools to initializing modules and replacing binds with mock. Let's take look at the example below:
class MyModule extends Module { @override List<Bind> get binds => [ Bind.factory<Dio>((i) => Dio()) Bind.factory((i) => XPTOEmail(i())) Bind.factory<EmailService>((i) => XPTOEmailService(i())) Bind.singleton((i) => Client(i())) ];}... class DioMock extends Mock implements DioForNative {}
main(){ final dioMock = DioMock();
setUp(){ initModule(MyModule(), replaceBinds: [ Bind.instance<Dio>(dioMock), ]); }}
TIP
Prefer to use Mockito or Mocktail to create mocks.
ATTENTION
In order for a bind to be eligible for replacement, the Bind MUST have the type declared in the Bind constructor. (ex: Bind<MyObjectType>() );