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?'
. Я предполагаю, что это происходит потому, что мы (безуспешно) пытаемся смоделировать метод расширения и вместо этого вызывается исходный метод.
Как я могу издеваться над методом расширения, чтобы получить желаемый результат?