Flutter - 加载 Assets 进行测试

不确定是限制还是什么,但下面的代码没有加载任何东西。我有一些数据驱动的行为,我想单独测试。

类加载器

import 'dart:async';
import 'package:flutter/services.dart' show rootBundle;

class Loader {
  Future<String> load() async{
    return await rootBundle.loadString('assets/json/sketch.json');
  }
}

测试

testWidgets('Should parse load sketch.json', (WidgetTester tester) async {
    var loaderFuture = new Loader();

    Future<String> resultFuture = loaderFuture.load();

    resultFuture.then((value) => print(value))
        .catchError((error) => print(error));

    while(true){};
  });

Future 既不返回成功也不返回错误,并且永远挂起。我知道 while(true) 锁定了测试,但现在我只想看看 sketch.json 打印出来

Assets 位置

最佳答案

要在您的测试中使用 rootBundle,您需要在测试程序开始时使用它:

import 'package:flutter_test/flutter_test.dart';

...
void main() {
  TestWidgetsFlutterBinding.ensureInitialized();

https://stackoverflow.com/questions/49480080/

相关文章:

dart - 如何运行 `source_gen` ?

android-studio - Android Studio 在创建新的 Flutter 项目时卡

flutter - 如何在单元测试期间访问 StatefulWidget 的状态内容?

flutter - 将文本包裹在一个圆圈内 (Flutter)

flutter - 找出 ListView 中的哪些项目是可见的

cookies - Dart/Flutter 身份验证实现

dart - 如何获取当前小部件的偏移量

dart - ScrollController 如何检测滚动开始、停止和滚动?

android - 如何在 flutter 和平台之间传输麦克风数据?

flutter - 如何使 Bottom Sheet 格的高度跟随 JSON 的项目数量