Verify в MOCK ТЕСТАХ [Flutter]

Я пишу unit-тесты для Flutter-приложения с использованием пакета mockito Столкнулся с ситуацией, когда при попытке проверить вызов геттера через verify(() => ...) вылетает ошибка:

Used on a non-mockito object
package:matcher                                 fail
package:mockito/src/mock.dart 1155:7            _makeVerify.<fn>
test\core\network\network_info_test.dart 30:13  main.<fn>.<fn>

При этом я уверен, что использую правильный мок-объект, созданный через @GenerateMocks.

@GenerateMocks([InternetConnectionChecker])
void main() {
  late MockInternetConnectionChecker internetConnectionChecker;
  late NetworkInfoImpl networkInfo;

  setUp(() {
    internetConnectionChecker = MockInternetConnectionChecker();
    networkInfo = NetworkInfoImpl(internetConnectionChecker);
  });

  test('should check internet connection', () async {
    // Arrange
    when(() => internetConnectionChecker.hasConnection)
        .thenAnswer((_) async => true);

    // Act
    final result = await networkInfo.isConnect;

    // Assert
    verify(() => internetConnectionChecker.hasConnection); // ❌ Выбрасывает ошибку
    expect(result, true);
  });
}

error test mockito

Однако следующая строка работает без ошибок:

verify(internetConnectionChecker.hasConnection); // ✅ Работает, но это правильный способ?

Мок работает с verify

Также проверил тип объекта:

print(internetConnectionChecker.runtimeType); // Выводит: MockInternetConnectionChecker

? Вопрос:

  • Почему в новых версиях mockito (v5.x+) возникает такая ошибка при использовании verify(() => ...)?
  • Как правильно проверять вызов геттеров в современных версиях mockito?
  • Может ли это быть связано с тем, что геттеры теперь требуют специального флага при генерации мока?

Ответы (0 шт):