Dart Frog Test
A testing library that makes it easy to test Dart Frog services. It offers helpers to mock requests as well as custom matchers in order to write readable expectations.
Note
This package is still experimental and although it is ready to be used, some/or all of its API might change (with deprecations) in future versions.
Installation 💻
❗ In order to start using Dart Frog Test you must have the Dart SDK installed on your machine.
Add dart_frog_test
to your pubspec.yaml
:
dependencies:
dart_frog_test:
Install it:
dart pub get
TestRequestContext
This class makes it simple to mock a RequestContext
for a Dart Frog request handler. To use it, simply import it
and use its constructor and methods to create the mocker context.
A simple example:
// Mocking a get request, which is the default
import '../../../routes/users/[id].dart' as route;
test('returns ok', () {
final context = TestRequestContext(
path: '/users/1',
);
final response = route.onRequest(context);
expect(response.statusCode, equals(200));
});
If the route handler function reads a dependency injected via context, that can also be mocked:
// Mocking a get request, which is the default
import '../../../routes/users/index.dart' as route;
test('returns ok', () {
final context = TestRequestContext(
path: '/users',
);
final userRepository = /* Create Mock */;
context.provide<UserRepository>(userRepository);
final response = route.onRequest(context);
expect(response.statusCode, equals(200));
});
Check the TestRequestContext
constructor for all the available context attributes that can be mocked.
Matchers
This package also provide test matchers that can be used to do expectation or assertions on top of
Dart Frog's Response
s:
expectJsonBody(response, {'name': 'Hank'});
expectBody(response, 'Hank');
expect(response, isOk);
expect(response, isBadRequest);
expect(response, isCreated);
expect(response, isNotFound);
expect(response, isUnauthorized);
expect(response, isForbidden);
expect(response, isInternalServerError);
expect(response, hasStatus(301));
await expectNotAllowedMethods(
route.onRequest,
contextBuilder: (method) => TestRequestContext(
path: '/dice',
method: method,
),
allowedMethods: [HttpMethod.post],
);
Libraries
- dart_frog_test
- A testing library which makes it easy to test Dart frog services.