run_with_network_images 0.0.1 run_with_network_images: ^0.0.1 copied to clipboard
Helper for providing mocked Image.network response in Flutter widget tests.
run_with_network_images #
A helper for providing mocked response to Image.network
in Flutter widget tests.
Introduction #
When you test the app that includes Image.network
, you get the 400
response.
Because, Image.network
uses the HttpClient
of dart:io
, and the HttpClient
of dart:io
always returns the 400
response in the Flutter widget test.
To fix this issue, you should override the HttpClient
to return the mock image instead of the 400
response.
This package overrides it to return the mock image instead of you.
Installing #
You can install this package by executing the following command.
flutter pub add --dev run_with_network_images
Or, open the pubspec.yaml
file and add the run_with_network_images
package to dev_dependencies as follows.
...
dev_dependencies:
run_with_network_images: [version]
...
Example #
You can use the runWithNetworkImages
function to fix the 400
response issue of the Image.network
. A full test example could look like the following.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:run_with_network_images/src/run_with_network_images.dart';
void main() {
testWidgets('Network image is rendered in widget test', (
WidgetTester tester,
) async {
await runWithNetworkImages(() async {
await tester.pumpWidget(
MaterialApp(
home: Image.network(
'https://dev-yakuza.posstree.com/assets/images/yakuza.jpg',
),
),
);
final image = tester.widget<Image>(find.byType(Image));
expect(
(image.image as NetworkImage).url,
'https://dev-yakuza.posstree.com/assets/images/yakuza.jpg',
);
});
});
}
You can just wrap the test code with await runWithNetworkImages(() async {});
to fix the issue.
Contributing #
If you want to contribute to this package, please see CONTRIBUTING.