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);
});
}
Однако следующая строка работает без ошибок:
verify(internetConnectionChecker.hasConnection); // ✅ Работает, но это правильный способ?
Также проверил тип объекта:
print(internetConnectionChecker.runtimeType); // Выводит: MockInternetConnectionChecker
? Вопрос:
- Почему в новых версиях mockito (v5.x+) возникает такая ошибка при использовании verify(() => ...)?
- Как правильно проверять вызов геттеров в современных версиях mockito?
- Может ли это быть связано с тем, что геттеры теперь требуют специального флага при генерации мока?

