如何在 Flutter 测试之间清除缓存?

时间:2021-01-06 21:25:49

标签: flutter dart flutter-test

我正在尝试编写包含缓存方法调用结果的包的测试。

  /// Retrieves package information from the platform.
  /// The result is cached.
  static Future<PackageInfo> fromPlatform() async {

    // *** This is causing issue in tests ***
    if (_fromPlatform != null) {
      return _fromPlatform;
    }

    final Map<String, dynamic> map =
        await _kChannel.invokeMapMethod<String, dynamic>('getAll');
    _fromPlatform = PackageInfo(
      appName: map["appName"],
      packageName: map["packageName"],
      version: map["version"],
      buildNumber: map["buildNumber"],
    );
    return _fromPlatform;
  }

但所有测试运行共享相同的 PackageInfo 实例,因此使用缓存的结果。如何在每次测试后重置缓存,以便每个测试使用自己的 PackageInfo 实例?

1 个答案:

答案 0 :(得分:0)

查看 the code from package:package_info,没有办法清除 chargerLivres() 中的缓存值。您可以 file an issue 请求 _fromPlatform 提供缓存控制机制或轻松允许伪造返回的 PackageInfo

与此同时,您始终可以实现自己的自己函数,绕过 PackageInfo 的缓存并在测试中返回假 PackageInfo,并在任何地方使用它而不是调用PackageInfo 直接。