'Cannot find cached network image in flutter test

I have a widget AvatarImage which renders a CircleAvatar if an image is provided or a default image DefaultAvatar otherwise.

Widget implementation looks like:

class AvatarImage extends StatelessWidget {
  
  final ImageProvider? image;

  const AvatarImage({this.image}): super();  


  Widget build(BuildContext context) {#
   if (image == null) return DefaultAvatar();

   return CicrcleAvatar(
     image: image,
   )
  }
}

Now I wanted to test that image is actually rendered using the following test case:

testWidgets("Renders image avatar when image is provided", (WidgetTester tester) async {
    
    mockNetworkImagesFor(() async {

        final testNetworkImage = CachedNetworkImageProvider("https://placebear.com/100/100");

        await tester.pumpWidget(TestApp(
            child: AvatarImage(image: testNetworkImage)
        ));

        await tester.pumpAndSettle();


        final image = find.image(testNetworkImage);


        debugDumpApp();

        expect(image, findsOneWidget);

        expect((image as Image).image, equals(testNetworkImage));
    });
    
});

But it is unable to find the image. I have tried using find.byType(CachedNetworkImage) but this also has no effect the test is always failing because the image cannot be found. I have verified that the widget is present in tree using debugDumpApp.

Why doesnt find find this image? How can I find it without using keys?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source