Skip to main content

Tests

Modular provides tools make unit testing and route and injection integration easier. In this session we'll learn how to do this.

Injection Test

The 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 {

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