gpt4 book ai didi

android - 无法使用 rootBundle 在 flutter 测试中加载 Assets

转载 作者:行者123 更新时间:2023-12-05 07:31:47 26 4
gpt4 key购买 nike

我创建了一个 Loader 类来加载包含名称的文本 Assets 。它在程序中使用时工作正常,但当我尝试在测试中使用它时出现错误 Unable to load asset: assets/texts/names.txt

我的目录结构是

|- assets     |- texts        |- names.txt  |- load_text     |- load_text.dart     |- loader.dart  |- test     |- asset_test.dart

my pubspec.yaml has - assets/texts/names.txt included.

loader.dart

class Loader{
Future<String> loadNames() async{
return await rootBundle.loadString('assets/texts/names.txt');
}
}

load_text.dart

class ValidationApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'userDetApp',
home: Scaffold(
appBar: AppBar(title: Text('Load names'),),
body: Column(
children: <Widget>[
RaisedButton(
child: Text('Click'),
onPressed: (){
Loader().loadNames().then((names){
print(names);
});
},
)
],
)
),
);

}

asset_test.dart

void main(){
test('Should load asset', () async{
String names = await new Loader().loadNames();
expect(names, 'John, Peter, Mary');
});
}

除了未能找到 Assets 的测试外,一切正常。需要帮忙。谢谢!

最佳答案

我在使用 flutter driver 访问文件资源进行集成测试时遇到了类似的问题。作为解决方法,我所做的是加载 API 所需的资源并直接解析 JSON 响应,而不是从 Assets 文件夹访问资源。

这是您可以试用的示例。这使用 https://jsonplaceholder.typicode.com作为其端点样本。

test('Test http', () async {
final file = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/albums/1'));
final json = jsonDecode(file.body.toString());
print('json contents: $json');
print('userId: ${json['userId']}');
final userId = json['userId'];
expect(userId, 1);
});

关于android - 无法使用 rootBundle 在 flutter 测试中加载 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51624078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com