Вот подход, с которым я пошел:
Создайте фиктивный клиент, который использует Dart http MockClient:
import 'package:http/testing.dart';
import 'package:http/http.dart';
MockClient integrationTestMockClient = MockClient((request) async {
switch (request.url.toString()) {
case 'https://staging.company.com/api/customer/123':
return Response('{"customer": "123", "name": "Jane Jimmy"}', 200);
case 'https://staging.company.com/api/customer/155':
return Response('{"customer": "155", "name": "Gregor"}', 200);
}
}
Теперь вам нужно передать ваш фиктивный клиент в ваше приложение, когда вы запускаете его в интеграционных тестах, например test_driver/app.dart
import 'mock_client.dart';
void main() async {
enableFlutterDriverExtension();
final app = await initializeApp(
integrationMockClient,
);
runApp(app);
}
Вам может потребоваться рефакторинг вашего не тестового кода, чтобы при запуске приложения вы могли внедрить клиента. При тестировании либо реальный клиент, либо фиктивный клиент.
import 'package:http/http.dart';
void main() => initializeApp(Client());