Флаттер: тестирование общих настроек - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь протестировать эту функцию:

 void store(String x, String y) async {
    Map<String, dynamic> map = {
      'x': x,
      'y': y,
    };
    var jsonString = json.encode(map);
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('fileName', jsonString);
  }

Я видел, что могу заполнить общие настройки с помощью

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;
  });

Но я не понимал, как использовать,особенно в моем случае.

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Спасибо nonybrighto за полезный ответ.

Я столкнулся с проблемой при попытке установить начальные значения в общих настройках, используя:

SharedPreferences.setMockInitialValues({
  "key": "value"
});

Похоже, что плагин shared_preferences ожидает, что ключи имеютпрефикс flutter..Поэтому при добавлении насмешек с использованием вышеуказанного метода необходимо добавить свои собственные ключи.

См. Строки 20 и 33 здесь для подтверждения этого: https://github.com/flutter/plugins/blob/master/packages/shared_preferences/lib/shared_preferences.dart

0 голосов
/ 13 октября 2018

Вы можете использовать SharedPreferences.setMockInitialValues для теста

test('Can Create Preferences', () async{

    SharedPreferences.setMockInitialValues({}); //set values here
    SharedPreferences pref = await SharedPreferences.getInstance();
    bool working = false;
    String name = 'john';
    pref.setBool('working', working);
    pref.setString('name', name);


    expect(pref.getBool('working'), false);
    expect(pref.getString('name'), 'john');
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...