I have the following setup:
return Container(
child: widget.searchResult.companyLogoUrl.isEmpty
? Image.asset('assets/images/missing-company-logo.png')
: Image.network(widget.searchResult.companyLogoUrl),
)
And now I want to test that the missing logo image is loaded when no url is provided. How can I get the source url or local file after obtain the Image widget in a test?
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(...)
});
Is there a way to tell which picture has been loaded?
Check what the image provider is with the image
property of the Image
widget class. From there you can extract individual properties:
String source;
if(image.image is AssetImage) {
source = image.image.assetName;
} else if(image.image is NetworkImage) {
source = image.image.url;
}
You could expand his to include more possible image providers as needed.