一尘不染

Flutter:如何加载文件进行测试

flutter

可以从相对于dart脚本文件的目录中读取文件,就像一样var file = new File('./fixture/contacts.json')

但是,无法在IDE内部运行的flutter测试中读取文件。

作为资源加载(不是,因为我不想在应用程序中捆绑测试数据文件)加载资源在测试中也不起作用。

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

运行flutter test非常快。但是,在Intellij
IDE中进行测试的速度很慢,但是它可以设置调试断点并进入并查看变量。因此,这两个测试都非常有用。


阅读 266

收藏
2020-08-13

共1个答案

一尘不染

刚刚尝试一下,它比您预期的要容易。

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

测试资源文件夹的结构。

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

test_resources / contacts.json

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

测试/ 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');
  });
}
2020-08-13