Как проверить, что функция, переданная в качестве аргумента, вызывается в модульных тестах dart

#unit-testing #dart #mockito-dart

#модульное тестирование #dart #mockito-dart

Вопрос:

У меня есть следующая функция

 Future<T> execute<T>(Future<T> Function(ApiService apiService) getFromRemote,
      {Future<void> Function(T data) cacheData, Future<T> Function() getFromCache}) {
}
  

И я хочу убедиться, что функция cacheData вызывается в следующем тесте

 CacheDataFunction mockCacheDataFunction;
setUpAll(() {
  mockCacheDataFunction = CacheDataFunction();
});
test('caches value provided in future', () async {
  await repositoryRequestExecutor.execute<int>(
    (_) => Future.value(testValue),
    cacheData: (data) => mockCacheDataFunction<int>(data),
    getFromCache: () => Future.value(testValueFromCache),
  );
  verify(mockCacheDataFunction<int>(testValue));
});
  

Итак, я сделал такой макет

 class CacheDataFunction extends Mock{
  Future<void> call<T>(T data) => Future.value();
}
  

Но он выдает ошибку объекта, отличного от mockito. Как я могу этого добиться?

Комментарии:

1. Mock s всегда следует использовать как class CacheDataFunction extends Mock {} без реализации. Реализация методов в нем является антишаблоном, поскольку она подрывает способность Mock выполнять свои обычные действия.

2. @jamesdlin ну, я знаю, я нашел это решение в stackoverflow, но оно не работает. Это именно то, что я пытался сделать