在 Dart 中读取数据文件进行单元测试

Tod*_*ery 5 dart dart-unittest dart-io dart-async

我正在使用此代码片段在单元测试中读取数据文件:

var file = new File('/Users/chambery/projects/Foo/src/resources/skills.yaml');
Future<String> finishedReading = file.readAsString();
finishedReading.then((text) {
  print(text);
  print(loadYaml(text));
});
Run Code Online (Sandbox Code Playgroud)

在 Dart 编辑器中运行我没有收到错误(但没有打印输出),

...
PASS: calc_ranks
PASS: load_skills

All 7 tests passed.
unittest-suite-success
Run Code Online (Sandbox Code Playgroud)

(编辑:删除了命令行错误;dart vm 已过时)

我不需要异步文件读取。

Flo*_*sch 2

我猜您没有告诉单元测试框架您的测试是异步的。因此,框架不会等待您的异步测试完成并假设它们已通过。

使用expectAsyncX(其中“X”是参数的数量)来确保框架等待异步测试完成。

请参阅单元测试文档:https://api.dartlang.org/docs/channels/stable/latest/unittest.html

如果您正在处理期货,您也可以使用expect(future, completes).