如何在Flutter中测试图像小部件的源路径



我有以下设置:

return Container(
child: widget.searchResult.companyLogoUrl.isEmpty
? Image.asset('assets/images/missing-company-logo.png')
: Image.network(widget.searchResult.companyLogoUrl),
)

现在我想测试当没有提供url时,丢失的徽标图像是加载的。在测试中获得图像小部件后,我如何获得源url或本地文件?

testWidgets('given', (tester) async {
await tester.pumpWidget(createSearchResultCard(mockResponse));
await tester.pumpAndSettle();
final Image image = find.byType(Image).evaluate().single.widget as Image;
final String source = image. // How do I get the file source?
expect(...)
});

是否有一种方法可以告诉哪个图片已经加载?

使用Image小部件类的image属性检查图像提供程序是什么。从这里,您可以提取单个属性:

String source;
if(image.image is AssetImage) {
source = image.image.assetName;
} else if(image.image is NetworkImage) {
source = image.image.url;
}

您可以根据需要扩展它以包含更多可能的图像提供程序。

您还可以使用

检查图像的源路径
expect(find.image(const AssetImage(imagePath)), findsOneWidget);

对于网络图像,我相信像这样的东西可以工作

expect(find.image(const NetworkImage(url)), findsOneWidget);

相关内容

  • 没有找到相关文章

最新更新