我正在尝试测试此功能:
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;
});
但是我不知道如何使用,特别是在我的情况下。
答案 0 :(得分:1)
您可以使用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');
});
答案 1 :(得分:1)
谢谢nonybrighto的帮助。
我在尝试使用以下方法在共享首选项中设置初始值时遇到了麻烦:
SharedPreferences.setMockInitialValues({
"key": "value"
});
似乎shared_preferences插件期望键具有前缀flutter.
。因此,如果使用上述方法进行模拟,则需要将其添加到您自己的密钥中。
有关此证据,请参见此处的第20和33行: https://github.com/flutter/plugins/blob/master/packages/shared_preferences/lib/shared_preferences.dart