Flutter - 加载测试资产
Flutter - Load assets for tests
不确定这是限制还是什么,但下面的代码不会加载任何内容。我想单独测试一些数据驱动的行为。
class 装载机
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 不会 return 既不成功也不出错,永远挂起。我知道
while(true) 锁定了测试,但现在我只想看到 sketch.json 打印出来
资产位置
请参阅 DefaultAssetBundle 的文档,它描述了如何使用它和 AssetBundle 来提供您自己的资产。
要在测试中使用 rootBundle
,您需要在测试程序的开头使用:
import 'package:flutter_test/flutter_test.dart';
...
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
不确定这是限制还是什么,但下面的代码不会加载任何内容。我想单独测试一些数据驱动的行为。
class 装载机
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 不会 return 既不成功也不出错,永远挂起。我知道 while(true) 锁定了测试,但现在我只想看到 sketch.json 打印出来
资产位置
请参阅 DefaultAssetBundle 的文档,它描述了如何使用它和 AssetBundle 来提供您自己的资产。
要在测试中使用 rootBundle
,您需要在测试程序的开头使用:
import 'package:flutter_test/flutter_test.dart';
...
void main() {
TestWidgetsFlutterBinding.ensureInitialized();