returns
Returns custom response from the received response.
Syntax
js
returns(path);
returns(custom_function);
returns(handler_name);
Usage
โ Correct Usage
js
// returns single item
const postID = await spec()
.get('/posts')
.returns('[0].id');
js
// returns multiple items in an array
const ids = await spec()
.get('/posts')
.returns('[0].id')
.returns('[1].id');
js
// custom callback function
const postID = await spec()
.get('/posts')
.returns((ctx) => { return ctx.res.json[0].id });
js
// using handlers
const postID = await spec()
.get('/posts')
.returns('#first post id');
Arguments
> path (string)
Json path. See json-query for more usage details.
If the path
starts with one of the value, it has a special meaning
path | description |
---|---|
req.pathParams | Request path params |
req.queryParams | Request query params |
req.headers | Request headers |
req.cookies | Request cookies |
res.body | Response body (this is default) |
res.headers | Response headers |
res.cookies | Response cookies |
> custom_function (function)
A callback function to return a custom reply. A context object is passed as an argument that has req
(request), res
(response) and data
properties.
> handler_name (string)
Name of the capture handler to use.
Examples
Return single value
js
const { spec } = require('pactum');
const postID = await spec()
.get('http://jsonplaceholder.typicode.com/posts')
.expectStatus(200)
.returns('[0].id');
await spec()
.get('http://jsonplaceholder.typicode.com/posts/{id}/comments')
.withPathParams('id', postID)
.expectStatus(200);
Return multiple values
js
const { spec } = require('pactum');
const ids = await spec()
.get('http://jsonplaceholder.typicode.com/posts')
.expectStatus(200)
.returns('[0].id')
.returns('[1].id');
await spec()
.get(`http://jsonplaceholder.typicode.com/posts/${ids[0]}/comments`)
.expectStatus(200);
await spec()
.get(`http://jsonplaceholder.typicode.com/posts/${ids[1]}/comments`)
.expectStatus(200);
Return response headers
By default, the json path targets the response body. res.headers
is a special syntax to fetch response headers.
js
const { spec } = require('pactum');
const headers = await spec()
.get('http://jsonplaceholder.typicode.com/posts')
.expectStatus(200)
.returns('res.headers');
Custom Function
js
const { spec } = require('pactum');
const postID = await spec()
.get('http://jsonplaceholder.typicode.com/posts')
.expectStatus(200)
.returns((ctx) => { return ctx.res.json[0].id });
Using Capture Handlers
js
const { spec, handler } = require('pactum');
handler.addCaptureHandler('first post id', (ctx) => {
return ctx.res.json[0].id;
});
const postID = await spec()
.get('http://jsonplaceholder.typicode.com/posts')
.expectStatus(200)
.returns('#first post id');