在Flutter测试中从文件读取资源

时间:2019-10-28 14:34:34

标签: flutter resources flutter-test

我想从Flutter单元测试中读取包含一些测试数据的文件。有推荐的方法吗?我尝试了resource程序包,但这引发了错误:

dart:isolate                              Isolate.resolvePackageUri
package:resource/src/resolve.dart 11:20   resolveUri
package:resource/src/resource.dart 74:21  Resource.readAsString

Unsupported operation: Isolate.resolvePackageUri

2 个答案:

答案 0 :(得分:0)

您不需要安装软件包,只需使用dart:io中的File

我将所有测试数据文件存储在“灯具”文件夹中。此文件夹包含一个包含以下代码的文件。

import 'dart:async';
import 'dart:io';


Future<File> fixture(String name) async => File('test/fixtures/$name');

在测试中,我在测试开始时加载文件

final File myTestFile = await fixture(tFileName);

或在本示例中的模拟声明中

        when(mockImageLocalDataSource.getImage(any))
        .thenAnswer((_) async => Right(await fixture(tFileName)));

答案 1 :(得分:0)

最后,我使用了以下技巧(可惜我不记得我建议将其正确归属的位置)来扫描文件系统树以找到项目根。这样,无论在哪个目录中执行测试,测试都可以找到数据(否则我的测试通过了命令行,但是在Android Studio中失败了。)

constexpr std::array<int, 10> longArray{0,1,2,3,4,5,6,7,8,9};
constexpr std::array<int,4> shortArray{0,3,6,9};
auto const& myArray = useShortArray ? shortArray : longArray;
for( auto n : myArray ) {
     // Do the stuff
}
相关问题