Baseflow / Baseflow/flutter_cached_network_image

How to test error widget

Open
#679 1 comment 3 reactions 0 assignees View on GitHub
Dominant language
Dart
Stars
2.6k
Forks
731
Avg merge
3d 9h
Merged PRs (30d)
1

Description

Hello,

is there a way to widget test CachedNetworkImage error widget ?

Here is an example :

Test OK with Image.network

```dart
testWidgets('network image', (tester) async {
final widget = Image.network(availableImageUrl, errorBuilder: (ctx, error, stack) => const Text('error'));
await tester.pumpWidget(widget);
await tester.pump();
expect(find.text('error'), findsOneWidget);
});
```

Test KO with CachedNetworkImage

```dart
testWidgets('cached network image', (tester) async {
final widget = CachedNetworkImage(
imageUrl: availableImageUrl,
errorWidget: (ctx, url, stack) => const Text('error'),
);
await tester.pumpWidget(widget);
await tester.pumpAndSettle();

expect(find.text('error'), findsOneWidget);
});
```

I know that in unit test, every http request fail with 400 status code, i can override CacheManager to use local file instead but it will represent my success case. I just want to test my error case.

And it seems to stuck on place holder, why ? I don't know :(

Test OK

```dart
testWidgets('cached network image', (tester) async {
final widget = MaterialApp(
home: CachedNetworkImage(
imageUrl: availableImageUrl,
placeholder: (ctx, url) => const Text('place holder'),
errorWidget: (ctx, url, error) => const Text('error'),
),
);
await tester.pumpWidget(widget);
await tester.pumpAndSettle();

expect(find.text('place holder'), findsOneWidget);
});
```

Thank you in advance for your help :)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.