flutter - 为什么 ApplicationsDocumentsDirectory 为单元测试返回 null?
问题描述
我正在使用颤振“path_provider”插件。我需要一个 SQLite 操作。我的错误测试类没有找到“getApplicationDocumentsDirectory”并返回 null。该应用程序为模拟器/真实设备运行,任何工作都没有问题。
寻找提供者存储库和测试文件夹。我已经厌倦了测试类示例,但错误仍然存在。
const MethodChannel channel =
MethodChannel('plugins.flutter.io/path_provider');
channel.setMockMethodCallHandler((MethodCall methodCall) async {
log.add(methodCall);
return response;
});
test('user save data', () async {
var response = null;
//FIXME : directory return null
final Directory directory = await getApplicationDocumentsDirectory();
final model = UserWordInformation();
model.word = word;
model.know = 1;
final result = await dbHelper.insert(model.toMap());
expect(result, 1);
});
我希望设备的返回路径文件夹。某些路径:“/Users/vb/Library/Developer/CoreSimulator/Devices/C5B3C94C-C774-4D0E-A19C-97AAF11BD9E3/data/Containers/Data/Application/0508712B-A138-483A- 921E-B5EAE6DF149F/文件"
解决方案
也许您忘记了初始化response
变量。
getApplicationDocumentsDirectory
在我的一个单元测试中,我遇到了类似的问题。
MissingPluginException(在通道 plugins.flutter.io/path_provider 上找不到方法 getApplicationDocumentsDirectory 的实现)
将以下代码添加到单元测试文件中:
const MethodChannel channel = MethodChannel('plugins.flutter.io/path_provider');
channel.setMockMethodCallHandler((MethodCall methodCall) async {
return ".";
});
现在它终于奏效了。希望这可以帮助。
推荐阅读
- git - Visual Code Studio 和 Github:我的新分支没有考虑我的更改
- angular - 在 Angular 中,我应该在哪里存储用户对象,以便在导航设置中引用它以获取可用性?
- javascript - 使用 Context API 与 CloneElement 为直接后代传递道具
- android - 添加evernote库得到Manifest merge failed com.android.support:support-compat:28.0.0
- apache-kafka - Confluent - 如何使用外部 Zookeeper 而不是嵌入式 Zookeeper
- swift - Swift - 线程 1:致命错误:索引超出范围错误问题
- mysql - GROUP BY 仅当列不为空/空时
- react-native - 使用navigation.goBack()时如何将数据发送回上一个屏幕?
- android - Android - 使用权限在特定路径中下载和保存文件
- c# - 使用 C# for webhooks 以 JSON 形式获取内容类型为 x-www-form-urlencoded 的请求消息