server_testing_shelf 0.3.2
server_testing_shelf: ^0.3.2 copied to clipboard
Adapter for the Shelf package to use server_testing for HTTP testing.
server_testing_shelf #
Shelf adapter for server_testing. It translates between Shelf’s Request /
Response objects and the test harness’ RequestHandler interface so you can
drive Shelf apps with the fluent assertions from server_testing.
Highlights #
- Zero-boilerplate adapter – wrap any
shelf.HandlerwithShelfRequestHandlerand instantly gain the testing DSL. - In-memory & real sockets – reuse all
server_testingtransports (e.g.TestClient.inMemory,TransportMode.ephemeralServer). - Property-tested translator – byte streams are copied chunk-by-chunk to avoid double-close issues, and the package includes property coverage for the adapter.
Install #
dev_dependencies:
server_testing: ^0.3.0
server_testing_shelf: ^0.2.1
test: ^1.26.0
Example #
import 'dart:io';
import 'package:server_testing/server_testing.dart';
import 'package:server_testing_shelf/server_testing_shelf.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:test/test.dart';
void main() {
final handler = shelf.Pipeline()
.addMiddleware(shelf.logRequests())
.addHandler((request) => shelf.Response.ok('ok'));
serverTest('Shelf ping', (client) async {
final response = await client.get('/ping');
response.assertStatus(HttpStatus.ok).assertBodyContains('ok');
}, handler: ShelfRequestHandler(handler));
}
Funding #
Help keep these adapters maintained by supporting @kingwill101 on Buy Me a Coffee.***