Updated test

This commit is contained in:
thomashii 2021-09-25 22:51:11 +08:00
parent 28de345422
commit a7f3c87b00
5 changed files with 22 additions and 33 deletions

View file

@ -1,5 +1,9 @@
# Change Log # Change Log
## 4.1.0
* Updated linter to `package:lints`
## 4.0.3 ## 4.0.3
* Updated README * Updated README

View file

@ -1,24 +1,15 @@
# Angel3 Testing Library # Angel3 Testing Library
[![version](https://img.shields.io/badge/pub-v4.0.3-brightgreen)](https://pub.dartlang.org/packages/angel3_test) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_test?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion) [![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/test/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/test/LICENSE)
Testing utility library for the Angel3 framework. Testing utility library for the Angel3 framework.
## TestClient ## TestClient
The `TestClient` class is a custom `angel3_client` that sends mock requests to your server. The `TestClient` class is a custom `angel3_client` that sends mock requests to your server. This means that you will not have to bind your server to HTTP to run. Plus, it is an `angel3_client`, and thus supports services and other goodies. The `TestClient` also supports WebSockets. WebSockets cannot be mocked (yet!) within this library, so calling the `websocket()` function will also bind your server to HTTP, if it is not already listening. The return value is a `WebSockets` client instance (from [`package:angel3_websocket`](https://github.com/dukefirehawk/angel/tree/angel3/packages/websocket));
This means that you will not have to bind your server to HTTP to run.
Plus, it is an `angel3_client`, and thus supports services and other goodies.
The `TestClient` also supports WebSockets. WebSockets cannot be mocked (yet!) within this library,
so calling the `websocket()` function will also bind your server to HTTP, if it is not already listening.
The return value is a `WebSockets` client instance
(from [`package:angel3_websocket`](https://github.com/dukefirehawk/angel/tree/angel3/packages/websocket));
```dart ```dart
var ws = await client.websocket('/ws'); var ws = await client.websocket('/ws');
@ -30,11 +21,10 @@ ws.onData.listen(...);
## Matchers ## Matchers
Several `Matcher`s are bundled with this package, and run on any `package:http` `Response`, Several `Matcher`s are bundled with this package, and run on any `package:http` `Response`, not just those returned by Angel.
not just those returned by Angel.
```dart ```dart
test('foo', () async { void test('foo', () async {
var res = await client.get('/foo'); var res = await client.get('/foo');
expect(res, allOf([ expect(res, allOf([
isJson({'foo': 'bar'}), isJson({'foo': 'bar'}),
@ -49,18 +39,14 @@ test('foo', () async {
])); ]));
}); });
test('error', () async { void test('error', () async {
var res = await client.get('/error'); var res = await client.get('/error');
expect(res, isAngelHttpException()); expect(res, isAngelHttpException());
expect(res, isAngelHttpException(statusCode: 404, message: ..., errors: [...])) // Optional expect(res, isAngelHttpException(statusCode: 404, message: ..., errors: [...])) // Optional
}); });
``` ```
`hasValidBody` is one of the most powerful `Matcher`s in this library, because it allows you to validate a JSON body against a [validation schema](https://github.com/dukefirehawk/angel/tree/angel3/packages/validate). `hasValidBody` is one of the most powerful `Matcher`s in this library, because it allows you to validate a JSON body against a validation schema. Angel3 provides a comprehensive [validation library](<https://github.com/dukefirehawk/angel/tree/master/packages/validate>) that integrates tightly with the `matcher` package that you already use for testing.
Angel provides a comprehensive validation library that integrates tightly with the very `matcher` package that you already use for testing.
[`package:angel3_validate`](https://github.com/dukefirehawk/angel/tree/angel3/packages//validate)
```dart ```dart
test('validate response', () async { test('validate response', () async {

View file

@ -1,4 +1 @@
include: package:pedantic/analysis_options.yaml include: package:lints/recommended.yaml
analyzer:
strong-mode:
implicit-casts: false

View file

@ -106,7 +106,9 @@ class TestClient extends client.BaseAngelClient {
if (authToken?.isNotEmpty == true) { if (authToken?.isNotEmpty == true) {
rq.headers.add('authorization', 'Bearer $authToken'); rq.headers.add('authorization', 'Bearer $authToken');
} }
rq..cookies.addAll(cookies)..session.addAll(session); rq
..cookies.addAll(cookies)
..session.addAll(session);
await request.finalize().pipe(rq); await request.finalize().pipe(rq);

View file

@ -1,22 +1,22 @@
name: angel3_test name: angel3_test
version: 4.0.3 version: 4.1.0
description: Testing utility library for the Angel3 framework. Use with package:test. description: Testing utility library for the Angel3 framework. Use with package:test.
homepage: https://angel3-framework.web.app/ homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/test repository: https://github.com/dukefirehawk/angel/tree/master/packages/test
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_client: ^4.0.0 angel3_client: ^4.1.0
angel3_framework: ^4.0.0 angel3_framework: ^4.2.0
angel3_http_exception: ^3.0.0 angel3_http_exception: ^3.0.0
angel3_validate: ^4.0.0 angel3_validate: ^4.0.0
angel3_websocket: ^4.0.0 angel3_websocket: ^4.1.0
angel3_mock_request: ^2.0.0 angel3_mock_request: ^2.0.0
angel3_container: ^3.0.0 angel3_container: ^3.0.0
http: ^0.13.1 http: ^0.13.1
matcher: ^0.12.10 matcher: ^0.12.10
web_socket_channel: ^2.0.0 web_socket_channel: ^2.0.0
dev_dependencies: dev_dependencies:
test: ^1.17.4 test: ^1.17.5
pedantic: ^1.11.0 lints: ^1.0.0