为什么ApplicationsDocumentsDirectory对于单元测试返回null?

时间:2019-05-15 22:58:30

标签: flutter flutter-plugin

我正在使用颤抖的“ 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 /文档”

2 个答案:

答案 0 :(得分:0)

此问题通常是由于缺少依赖关系而发生的,您的pubspec.yaml具有以下依赖关系吗?

依赖性:

  path_provider: ^1.2.0

  simple_permissions: ^0.1.9

如果simple_permissions:^ 0.1.9在构建时抛出错误,请改用此依赖项:

path_provider: ^1.2.0

permission_handler: ^3.2.0

答案 1 :(得分:0)

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

在我的一个单元测试中,getApplicationDocumentsDirectory也有类似的问题。

  

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

在单元测试文件中添加了以下代码:

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

现在终于可以了。 希望这会有所帮助。