我正在尝试编写包含缓存方法调用结果的包的测试。
/// 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
实例?
答案 0 :(得分:0)
查看 the code from package:package_info
,没有办法清除 chargerLivres()
中的缓存值。您可以 file an issue 请求 _fromPlatform
提供缓存控制机制或轻松允许伪造返回的 PackageInfo
。
与此同时,您始终可以实现自己的自己函数,绕过 PackageInfo
的缓存并在测试中返回假 PackageInfo
,并在任何地方使用它而不是调用PackageInfo
直接。