如何修复抖动测试中的异步/等待错误?

时间:2019-04-10 10:15:38

标签: flutter async-await flutter-dependencies

我正在尝试为Flutter应用编写测试。我正在为其编写测试的函数返回一个Future,因此我正在使用await。

但是一旦使用任何await语句,我就会收到MissingPluginException错误。

我尝试更改依赖版本,但这无济于事。对此,在GitHub上找不到Flutter Issues或StackOverFlow的任何内容。

check_app_version_test.dart

import 'package:flutter_test/flutter_test.dart';

import '../home.dart';

void main() {
  test('checkAppVersion', () async {
    expect(await checkAppVersionTest(true), true);
  });
}

home.dart

String currentVersionString = await GetVersion.projectVersion;
Version currentVersion = Version.parse(currentVersionString);

Future<bool> checkAppVersionTest([bool test, Version latestVersion]) async {

...
  if (currentVersion < latestVersion) {
    updateRequired = true;
  }
...
return updateRequired

}

预期可以正常工作。

获取错误:

  

MissingPluginException(未找到方法getAll的实现   频道plugins.flutter.io/package_info)
  包:flutter / src / services / platform_channel.dart 300:7   MethodChannel.invokeMethod =====异步间隔   ============================ dart:异步_AsyncAwaitCompleter.completeError包:flutter / src / services / platform_channel.dart
  MethodChannel.invokeMethod =====异步间隔   ============================= dart:async _asyncThenWrapperHelper软件包:flutter / src / services / platform_channel.dart
  MethodChannel.invokeMethod包:package_info / package_info.dart   38:17 PackageInfo.fromPlatform

2 个答案:

答案 0 :(得分:0)

看起来您只需安装Pod。
打开终端并导航至flutter目录。
通过cd iOS/进入iOS目录,然后运行pod install

现在您应该可以正常运行项目了。

答案 1 :(得分:0)

只需终止该应用程序并热重启该应用程序即可。 添加依赖项时,需要依赖于平台的代码才能通过平台通道运行。您必须通过终止当前应用程序来重新启动该应用程序。