如何撤消'setMockInitialValues'



我使用shared_preferences来存储一些简单的数据。

当我尝试测试这个时,我遇到了一个问题。

测试1适用于快乐流。我使用SharedPreferences.setMockInitialValues(data);来设置一些初始数据并检索它。

测试2测试抛出PlatformException时会发生什么。我发现可以伪造这个,我可以像这样挂入PlatformChannel

sharedPreferencesMethodChannel
.setMockMethodCallHandler((MethodCall methodCall) async {
throw genericPlatformException;
});

当我只运行测试2时,它按预期工作,但如果我同时运行两个测试,测试2将失败。如果在测试1中我不使用SharedPreferences.setMockInitialValues(data);并同时运行两者,则测试2将通过。

所以我想我只需要重置或撤消每个测试的模拟值设置。。。但是我该怎么做呢?似乎设置它们一次是永久的。

这似乎不可能做到。

PlatformsExceptions这样的测试行为可以通过使用mock来完成。

我只是允许在包装类上设置一个模拟SharedPreferences,这样在测试时就不会与真正的SharedPreferences交互。

class WrapperClass {
SharedPreferences? _sharedPreferences;
set mockSharedPreferences(SharedPreferences mock) {
_sharedPreferences = mock;
}
Future<String> getData() async {
// The real SharedPreferences only gets called if no mock was set
_sharedPreferences ??= await SharedPreferences.getInstance();
return _sharedPreferences!.getString('my_key') ?? 'default';
}
}

相关内容

  • 没有找到相关文章

最新更新