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

Joe*_*röm 6 image flutter flutter-test flutter-layout

我有以下设置:

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

现在我想测试在没有提供 url 的情况下是否加载缺少的徽标图像。测试中获取Image小部件后如何获取源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(...)
    });
Run Code Online (Sandbox Code Playgroud)

有没有办法知道哪张图片已加载?

Chr*_*ore 8

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

String source;
if(image.image is AssetImage) {
  source = image.image.assetName;
} else if(image.image is NetworkImage) {
  source = image.image.url;
}
Run Code Online (Sandbox Code Playgroud)

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