首页 > 解决方案 > 为什么 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/文件"

标签: flutterflutter-plugin

解决方案


也许您忘记了初始化response变量。

getApplicationDocumentsDirectory在我的一个单元测试中,我遇到了类似的问题。

MissingPluginException(在通道 plugins.flutter.io/path_provider 上找不到方法 getApplicationDocumentsDirectory 的实现)

将以下代码添加到单元测试文件中:

const MethodChannel channel = MethodChannel('plugins.flutter.io/path_provider');
channel.setMockMethodCallHandler((MethodCall methodCall) async {
  return ".";
});

现在它终于奏效了。希望这可以帮助。


推荐阅读