http_cassette_dio 0.1.0 copy "http_cassette_dio: ^0.1.0" to clipboard
http_cassette_dio: ^0.1.0 copied to clipboard

HTTP Cassette integration for recording and replaying requests made with dio.

example/http_cassette_dio_example.dart

import 'dart:typed_data';

import 'package:dio/dio.dart';
import 'package:http_cassette/http_cassette.dart';
import 'package:http_cassette_dio/http_cassette_dio.dart';

Future<void> main() async {
  final engine = CassetteEngine(store: MemoryCassetteStore());
  final transport = _ExampleAdapter();
  final dio = Dio()..httpClientAdapter = transport;
  dio.installHttpCassette(engine);

  final live = await engine.record(
    'example/greeting',
    () => dio.get<String>('https://example.test/greeting'),
  );
  final recorded = await engine.replay(
    'example/greeting',
    () => dio.get<String>('https://example.test/greeting'),
  );

  if (live.data != 'Hello' || recorded.data != 'Hello') {
    throw StateError('The example response was not preserved.');
  }
  if (transport.fetchCount != 1) {
    throw StateError('Replay unexpectedly reached the transport.');
  }

  dio.close();
}

final class _ExampleAdapter implements HttpClientAdapter {
  var fetchCount = 0;

  @override
  Future<ResponseBody> fetch(
    RequestOptions options,
    Stream<Uint8List>? requestStream,
    Future<void>? cancelFuture,
  ) async {
    fetchCount += 1;
    return ResponseBody.fromString(
      'Hello',
      200,
      headers: <String, List<String>>{
        Headers.contentTypeHeader: <String>['text/plain'],
      },
    );
  }

  @override
  void close({bool force = false}) {}
}
0
likes
160
points
30
downloads

Documentation

API reference

Publisher

verified publisherebenezerundie.com

Weekly Downloads

HTTP Cassette integration for recording and replaying requests made with dio.

Repository (GitHub)
View/report issues

Topics

#dio #http #testing

License

BSD-3-Clause (license)

Dependencies

dio, http_cassette

More

Packages that depend on http_cassette_dio