request<T> method

  1. @override
Future<T> request<T>(
  1. Endpoint endpoint, {
  2. Map<String, dynamic>? queryParams,
  3. Map<String, String>? pathParams,
  4. dynamic body,
})
override

Executes a request for a given endpoint.

Implementation

@override
Future<T> request<T>(
  Endpoint endpoint, {
  Map<String, dynamic>? queryParams,
  Map<String, String>? pathParams,
  dynamic body,
}) async {
  // Record the request
  requests.add(MockRequest(
    endpointId: endpoint.id,
    queryParams: queryParams,
    pathParams: pathParams,
    body: body,
    timestamp: DateTime.now(),
  ));

  // Simulate latency if set
  if (latency != null) {
    await Future.delayed(latency!);
  }

  // Check for mock error
  if (_mockErrors.containsKey(endpoint.id)) {
    throw _mockErrors[endpoint.id]!;
  }

  // Check for mock response
  if (_mockResponses.containsKey(endpoint.id)) {
    final response = _mockResponses[endpoint.id];
    return endpoint.parser != null
        ? endpoint.parser!(response) as T
        : response as T;
  }

  throw StateError('No mock response set for endpoint: ${endpoint.id}. '
      'Call mockResponse("${endpoint.id}", yourData) first.');
}