Flutter: фиктивный метод расширения с использованием Mocktail (от EasyLocalization)

Пакет флаттера easy_localization имеет метод расширения в BuildContext, который выглядит следующим образом:

        Locale get deviceLocale => EasyLocalization.of(this)!.deviceLocale;

Я хочу издеваться над этим, используя Mocktail.

Я пытался:

      import 'package:mocktail/mocktail.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:test/test.dart';

class MockBuildContext extends Mock implements BuildContext {}

void main() {
  test("Sample test", () {
    final context = MockBuildContext();
    when(() => context.deviceLocale).thenReturn(const Locale('en', 'US'));
    expect(Locale('en', 'US'), context.deviceLocale);
  });
}

Однако это вызывает ошибку:type 'Locale' is not a subtype of type '_EasyLocalizationProvider?'. Я предполагаю, что это происходит потому, что мы (безуспешно) пытаемся смоделировать метод расширения и вместо этого вызывается исходный метод.

Как я могу издеваться над методом расширения, чтобы получить желаемый результат?

0 ответов

Другие вопросы по тегам