19

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

类加载器

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 打印出来

资产位置

在此处输入图像描述

4

2 回答 2

15

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

import 'package:flutter_test/flutter_test.dart';

...
void main() {
  TestWidgetsFlutterBinding.ensureInitialized();
于 2020-06-30T20:58:41.583 回答
6

请参阅DefaultAssetBundle的文档,它描述了使用它和 AssetBundle 来提供您自己的资产。

于 2018-06-27T16:45:48.227 回答