Flutter 测试 MissingPluginException
Flutter Test MissingPluginException
运行 依赖于 SharedPreferences 插件的测试总是导致
MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
我的pubspec.yaml
dev_dependencies:
flutter_test:
sdk: flutter
dependencies:
flutter:
sdk: flutter
shared_preferences: 0.2.3
的代码在应用程序本身中运行良好。
为了 运行 使用插件的测试,我是否遗漏了一些我需要做的事情?
如果您使用的是 shared_preferences 0.2.4 及更高版本,请使用 setMockInitialValues
:
SharedPreferences.setMockInitialValues({}); // set initial values here if desired
对于早期版本,您可以手动完成:
const MethodChannel('plugins.flutter.io/shared_preferences')
.setMockMethodCallHandler((MethodCall methodCall) async {
if (methodCall.method == 'getAll') {
return <String, dynamic>{}; // set initial values here if desired
}
return null;
});
我在使用 flutter_secure_storage 插件时遇到了完全相同的问题。我认为问题在于,对于这两个插件,您都依赖 phone 或模拟器上的存储(而不是您的应用程序中的某些东西),因此它在您的测试环境中不可用。通过执行 flutter run your_test_file.dart
直接尝试 运行 测试。根据 https://flutter.io/testing/ 这应该执行你的测试 "in your preferred runtime environment such as a simulator or a device." 它对我来说非常有效。
@Siman 谢谢
版本shared_preferences: ^0.5.12
广告SharedPreferences.setMockInitialValues({});
在 Flutter App
的主要功能中的 runApp()
函数之前
为我修复了这个错误
运行 依赖于 SharedPreferences 插件的测试总是导致
MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
我的pubspec.yaml
dev_dependencies:
flutter_test:
sdk: flutter
dependencies:
flutter:
sdk: flutter
shared_preferences: 0.2.3
的代码在应用程序本身中运行良好。 为了 运行 使用插件的测试,我是否遗漏了一些我需要做的事情?
如果您使用的是 shared_preferences 0.2.4 及更高版本,请使用 setMockInitialValues
:
SharedPreferences.setMockInitialValues({}); // set initial values here if desired
对于早期版本,您可以手动完成:
const MethodChannel('plugins.flutter.io/shared_preferences')
.setMockMethodCallHandler((MethodCall methodCall) async {
if (methodCall.method == 'getAll') {
return <String, dynamic>{}; // set initial values here if desired
}
return null;
});
我在使用 flutter_secure_storage 插件时遇到了完全相同的问题。我认为问题在于,对于这两个插件,您都依赖 phone 或模拟器上的存储(而不是您的应用程序中的某些东西),因此它在您的测试环境中不可用。通过执行 flutter run your_test_file.dart
直接尝试 运行 测试。根据 https://flutter.io/testing/ 这应该执行你的测试 "in your preferred runtime environment such as a simulator or a device." 它对我来说非常有效。
@Siman 谢谢
版本shared_preferences: ^0.5.12
广告SharedPreferences.setMockInitialValues({});
在 Flutter App
runApp()
函数之前
为我修复了这个错误