Introduction to Frisby
Frisby is a fantastic tool for testing REST APIs. Built on top of Jest, it offers a simple and powerful way to create and manage test cases for your APIs. In this guide, we’ll explore several useful APIs of Frisby with code snippets and a comprehensive app example to help you understand how to use it effectively.
Installation
First, you need to install Frisby:
npm install frisby --save-dev
Basic Example
Here’s a basic example to get you started:
const frisby = require('frisby');
it('should return a status of 200', function () {
return frisby.get('https://jsonplaceholder.typicode.com/posts/1')
.expect('status', 200);
});
Advanced API Testing
Frisby provides dozens of useful APIs. Let’s explore several of them:
GET Request
it('should return a specific post', function () {
return frisby.get('https://jsonplaceholder.typicode.com/posts/1')
.expect('status', 200)
.expect('json', 'id', 1);
});
POST Request
it('should create a new post', function () {
return frisby.post('https://jsonplaceholder.typicode.com/posts', {
title: 'foo',
body: 'bar',
userId: 1,
})
.expect('status', 201)
.expect('json', 'title', 'foo');
});
PUT Request
it('should update a post', function () {
return frisby.put('https://jsonplaceholder.typicode.com/posts/1', {
id: 1,
title: 'updated title',
body: 'updated body',
userId: 1,
})
.expect('status', 200)
.expect('json', 'title', 'updated title');
});
DELETE Request
it('should delete a post', function () {
return frisby.del('https://jsonplaceholder.typicode.com/posts/1')
.expect('status', 200);
});
Header Verification
it('should verify response headers', function () {
return frisby.get('https://jsonplaceholder.typicode.com/posts')
.expect('status', 200)
.expect('header', 'Content-Type', 'application/json; charset=utf-8');
});
Auth Tests
it('should test an authenticated endpoint', function () {
return frisby.setup({
request: {
headers: {
'Authorization': 'Bearer your_token_here',
},
},
})
.get('https://jsonplaceholder.typicode.com/posts/1')
.expect('status', 200);
});
App Example with Frisby APIs
To fully understand the power of Frisby, let’s create a comprehensive example that uses multiple APIs:
const frisby = require('frisby');
describe('Comprehensive API Tests', function () {
it('should get a list of posts', function () {
return frisby.get('https://jsonplaceholder.typicode.com/posts')
.expect('status', 200)
.expect('jsonTypes', '*', {
userId: frisby.Joi.number().required(),
id: frisby.Joi.number().required(),
});
});
it('should create, update, and delete a post', function () {
let postId;
return frisby.post('https://jsonplaceholder.typicode.com/posts', {
title: 'foo',
body: 'bar',
userId: 1,
})
.expect('status', 201)
.then((res) => {
postId = res.json.id;
return frisby.put(`https://jsonplaceholder.typicode.com/posts/${postId}`, {
id: postId,
title: 'updated title',
body: 'updated body',
userId: 1,
})
.expect('status', 200)
.then(() => {
return frisby.del(`https://jsonplaceholder.typicode.com/posts/${postId}`)
.expect('status', 200);
});
});
});
});
With these examples, you should have a good understanding of how to use Frisby for API testing. Feel free to explore more and adapt the code to fit your needs.
Hash: 5635693837d8e66d521028e60815ca1158d4416de13ac42e004090fa6dd3ea96