Как проверить метод, который использует package_info во Flutter? - PullRequest
0 голосов
/ 12 января 2019

Я пишу плагин Flutter, который проверяет Play Store или App Store, чтобы узнать, нужно ли обновлять приложение. Я использую пакет package_info для определения версии приложения, которое есть у пользователя. Мой код выглядит так:

getVersionStatus() {
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    localVersion = packageInfo.version;
    ...
}

Я хочу протестировать этот метод, но если он запускается как модульный тест, вызов fromPlatform просто зависает и истекает время теста. Есть ли более элегантный способ решить эту проблему, чем ввод логического значения testing? То есть:

if (testing) {
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    localVersion = packageInfo.version;
} else {
    localVersion = '0.0.0'
}

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

1 Ответ

0 голосов
/ 01 марта 2019

Как сказал Гюнтер, вы можете издеваться PackageInfo

void packageInfoMock() {
  const MethodChannel('plugins.flutter.io/package_info').setMockMethodCallHandler((MethodCall methodCall) async {
    if (methodCall.method == 'getAll') {
      return <String, dynamic>{
        'appName': 'ABC', <--- set initial values here
        'packageName': 'A.B.C', <--- set initial values here
        'version': '1.0.0', <--- set initial values here
        'buildNumber': '' <--- set initial values here
      };
    }
    return null;
  });
}
...