pulyaevskiy/test-coverage

Mock class doesn't show in coverage report

douglasalipio opened this issue · 1 comments

I have an issue every time when I run the flutter test --coverage and genhtml -o coverage coverage/lcov.info. After generating the coverage report to analyze it, I found all the Mock classes (Remote data source) do not cover by the library.

Example:

class MockRegisterUserDataSource extends Mock
    implements RegisterUserDataSource {}

void main() {
  MockRegisterUserDataSource mockRegisterUserDataSource;
  RegisterUserRepositoryImp repository;

  setUp(() {
    mockRegisterUserDataSource = MockRegisterUserDataSource();
    repository =
        RegisterUserRepositoryImp(dataSource: mockRegisterUserDataSource);
  });

test('should create an user', () async {
      // arrange
      final userModel = UserModel(email: email, displayName: displayName);
      final user = User(email, displayName);
      when(mockRegisterUserDataSource.createAccount(any, any))
          .thenAnswer((_) async => userModel);
      // act
      final result = await repository.createAccount(email, displayName);
      // assert
      verify(mockRegisterUserDataSource.createAccount(email, displayName));
      verifyNoMoreInteractions(mockRegisterUserDataSource);
      expect(result, equals(Right(user)));
    });
}

And, this is the LCOV - code coverage report.

Screenshot 2020-05-12 at 13 53 03

I don’t think Flutter uses this library for test coverage. I recommend submitting an issue in the Flutter repo.