文件可以从相对于DART脚本文件的目录中读取,简单地说是var file = new File('./fixture/contacts.json').

但是,无法读取在IDE中运行的Flutter 测试文件.

Loading as resource(不是,因为我不想在应用程序中Bundle 测试数据文件)在测试中也不起作用.

什么是在Flutter 中读取文件的好方法(对于命令行测试和IDE测试)?

flutter test米是非常快的.然而,在IntelliJ IDE中测试速度非常慢,但它可以设置调试断点以及单步执行和查看变量.所以这两种测试都非常有用.

推荐答案

刚刚试了试,这比你想象的要容易.

首先,创建一个与测试位于同一目录中的文件夹.例如,我创建了一个名为test_resources的文件夹.

Test resources folder structure.

然后,假设我们有以下JSON文件用于测试.

test_resources/contacts.json

{
  "contacts": [
    {
      "id": 1,
      "name": "Seth Ladd"
    },
    {
      "id": 2,
      "name": "Eric Seidel"
    }
  ]
}

test/load_file_test.dart

我们可以将其用于我们的测试,如下所示:

import 'dart:convert';
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';

void main() {
  test('Load a file', () async {
    final file = new File('test_resources/contacts.json');
    final json = jsonDecode(await file.readAsString());
    final contacts = json['contacts'];

    final seth = contacts.first;
    expect(seth['id'], 1);
    expect(seth['name'], 'Seth Ladd');

    final eric = contacts.last;
    expect(eric['id'], 2);
    expect(eric['name'], 'Eric Seidel');
  });
}

Flutter相关问答推荐

Flutter 导致底部溢出

Flutter:sqflite DB

Flutter:如何从Bottom Navigator中删除此内容

如何等待抖动S定时器.定期取消?

Flutter -使用最小高度展开

无法将Flutter 连接到Firebase

Android NFC未收到空的NFC标签

点击表情符号按钮后,Flutter 文本域文本编辑控制器将文本恢复为原始值

在LinkedIn上分享Fighter和Web的链接会产生不同的结果

为什么当我使用Riverpod更新状态时,列表会被刷新?

try 使用fl_Chart of Ffltter,但在导入它时遇到以下错误:Error:';TextScaler';is;t a type

StateNotifer正在riverpod中提供初始状态值(bool)

Riverpod 2.0-如何使用FutureOr和AutoDisposeSyncNotificationer处理api状态代码?

如何使 flutter 2 手指zoom ?

如何在Flutter中动态绘制一条从A点到B点的线?

通过在父窗口小部件功能上设置状态来浏览屏幕

如何从底部导航栏打开 bottomModal 表?

Listview 如何转到下一行/新行?

Positioned 的宽度或 SizedBox 的宽度都不适用于堆栈小部件 - Flutter

在 Flutter 应用程序中全局使用 assets 文件夹