Running Assertions
Frisby has many ways of running assertions against the HTTP response. Below are the following methods available by default:
Frisby comes with many handy built-in expect handlers to help you test the HTTP response of your API.
status
- Check HTTP statusheader
- Check HTTP header key + valuejson
- Match json structure + valuesjsonStrict
- Match EXACT json structure + values (extra keys not tested for cause test failures)jsonTypes
- Match json structure + value typesjsonTypesStrict
- Match EXACT json structure + value types (extra keys not tested for cause test failures)bodyContains
- Match partial body content (string or regex)
it('should be a teapot', function () {
return frisby.get('https://httpbin.org/status/418')
.expect('status', 418);
});
it('should have a JSON Content-Type header', function () {
return frisby.get('https://httpbin.org/headers')
.expect('header', 'Content-Type', 'application/json');
});
it('should have a "Host" header with a value of "httpbin.org"', function () {
return frisby.get('https://httpbin.org/headers')
.expect('json', 'headers', {
Host: 'httpbin.org'
});
});
A more complex example:
it ('should return a list of feed items', function () {
return frisby
.get('https://jsonfeed.org/feed.json')
.expect('status', 200)
.expect('json', 'version', 'https://jsonfeed.org/version/1')
.expect('json', 'title', 'JSON Feed')
.expect('jsonTypes', 'items.*', { // Assert *each* object in 'items' array
'id': Joi.string().required(),
'url': Joi.string().uri().required(),
'title': Joi.string().required(),
'date_published': Joi.date().iso().required(),
});
});
it('should return all headers as strings', function () {
return frisby.get('https://httpbin.org/headers')
// Using a wildcard in the path '*' check EACH value
.expect('jsonTypes', 'headers.*', frisby.Joi.string());
});
Runs an inverse assertion that passes when there is an error thrown. Uses all the same types and arguments as
expect()
.it('should not return an error', function () {
return frisby.get('https://httpbin.org/headers')
// Should not return an error
.expectNot('json', { result: 'error' });
});
Last modified 3yr ago