Flutter Test MissingPluginException

后端 未结 3 1724
刺人心
刺人心 2020-12-03 17:28

Running tests which rely on the SharedPreferences Plugin always result in

MissingPluginException(No implementation found for method getAll on channel plugins         


        
相关标签:
3条回答
  • 2020-12-03 17:36

    If you're using shared_preferences 0.2.4 and above, use setMockInitialValues:

    SharedPreferences.setMockInitialValues({}); // set initial values here if desired
    

    For earlier versions you can do it manually:

    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;
      });
    
    0 讨论(0)
  • 2020-12-03 17:40

    @Siman thanks

    version shared_preferences: ^0.5.12

    ad SharedPreferences.setMockInitialValues({}); before the runApp() function inside the main funation of Flutter App

    makes this error fixed for me

    0 讨论(0)
  • 2020-12-03 17:42

    I had the exact same problem with the flutter_secure_storage plugin. I believe the issue is that with both plugins you are relying on storage on your phone or emulator (not something in your app) so it's not available in your test environment. Try running the test directly by executing flutter run your_test_file.dart. According to https://flutter.io/testing/ this should execute your test "in your preferred runtime environment such as a simulator or a device." It worked perfectly for me.

    0 讨论(0)
提交回复
热议问题