superagent integration testing with Chai assertions.
- simplified fork of
chai-http - esm module only, support node >= 14
- integration test request composition
- test http apps or external services
- assertions for common http tasks
- chai
expectandshouldinterfaces
$ npm install chai-superagent superagent
Use this plugin as you would all other Chai plugins. Notice the function call - it accepts an optional parameter { strict }: { strict?: boolean }. When strict is true, the assertions will assert that the object being tested is an instance of superagent Request, Response or Agent types. It defaults to true.
import { use } from 'chai';
import superagent from 'chai-superagent';
use(superagent());Use superagent as you normally would, and test
the responses using the assertions provided in this library.
import request from 'superagent';
request
.get('http://localhost:8000/foo')
.then(res => expect(res).to.have.status(200));The Chai HTTP module provides a number of assertions
for the expect and should interfaces.
- @param {Number} status number
Assert that a response has a supplied status.
expect(res).to.have.status(200);- @param {String} header key (case insensitive)
- @param {String|RegExp} header value (optional)
Assert that a Response or Request object has a header.
If a value is provided, equality to value will be asserted.
You may also pass a regular expression to check.
Note: When running in a web browser, the same-origin policy only allows Chai HTTP to read certain headers, which can cause assertions to fail.
expect(req).to.have.header('x-api-key');
expect(req).to.have.header('content-type', 'text/plain');
expect(req).to.have.header('content-type', /^text/);Assert that a Response or Request object has headers.
Note: When running in a web browser, the same-origin policy only allows Chai HTTP to read certain headers, which can cause assertions to fail.
expect(req).to.have.headers;Assert that a Response or Request object has a given content-type.
expect(req).to.be.json;
expect(req).to.be.html;
expect(req).to.be.text;Assert that a Response or Request object has a given charset.
expect(req).to.have.charset('utf-8');Assert that a Response object has a redirect status code.
expect(res).to.redirect;
expect(res).to.not.redirect;- @param {String|RegExp} location url
Assert that a Response object redirects to the supplied location.
expect(res).to.redirectTo('http://example.com');
expect(res).to.redirectTo(/^\/search\/results\?orderBy=desc$/);- @param {String} parameter name
- @param {String} parameter value
Assert that a Request object has a query string parameter with a given
key, (optionally) equal to value
expect(req).to.have.param('orderby');
expect(req).to.have.param('orderby', 'date');
expect(req).to.not.have.param('limit');- @param {String} parameter name
- @param {String} parameter value
Assert that a Request or Response object has a cookie header with a
given key, (optionally) equal to value
expect(req).to.have.cookie('session_id');
expect(req).to.have.cookie('session_id', '1234');
expect(req).to.not.have.cookie('PHPSESSID');
expect(res).to.have.cookie('session_id');
expect(res).to.have.cookie('session_id', '1234');
expect(res).to.not.have.cookie('PHPSESSID');See the LICENSE file for license rights and limitations (MIT).