Supertest is an NPM module that is used to facilitate HTTP requests when writing web applications. It provides a simple and intuitive interface that allows developers to write expressive and readable tests for their API endpoints.
In this article, we will discuss Supertest, its usage, and explore its capabilities through code examples.
What is Supertest?
Supertest is an NPM module that is a part of the Superstack framework. The Supertest module enables developers to test their HTTP endpoints by making HTTP requests. It facilitates HTTP requests to the web application, and the response can be verified and validated.
Supertest can be used with any web application that is built on top of any framework, including but not limited to Express.js, Koa.js, and Nest.js. It provides easy-to-use functions such as get, post, put, delete, and head, which can be used to make HTTP requests.
Supertest Usage
Supertest is easy to use and can be installed using npm, the Node.js package manager.
After installing Supertest, import it into your code file using the following code:
var request = require('supertest');
Once Supertest is installed, you can start using its functions to make HTTP requests.
Code Examples
In this section, we will look at some code examples that demonstrate how to use Supertest.
Example 1: Making a GET Request
To make a GET request using Supertest, use the following code:
request(app)
.get('/api/users')
.expect(200)
.end(function(err, res) {
if (err) {
throw err;
}
console.log('Response:', res.body);
});
In the code above, we make a GET request to the '/api/users' endpoint and expect the response code to be 200. If the request is successful, the response body is logged to the console.
Example 2: Making a POST Request
To make a POST request using Supertest, use the following code:
request(app)
.post('/api/users')
.send({
name: 'John Doe',
email: 'johndoe@example.com'
})
.expect(201)
.end(function(err, res) {
if (err) {
throw err;
}
console.log('Response:', res.body);
});
In the code above, we make a POST request to the '/api/users' endpoint with the request body (name and email). We expect the response code to be 201. If the request is successful, the response body is logged to the console.
Example 3: Verifying Response Body
To verify the response body using Supertest, use the following code:
request(app)
.get('/api/users')
.expect(200)
.end(function(err, res) {
if (err) {
throw err;
}
expect(res.body).to.be.an('array');
expect(res.body.length).to.equal(0);
});
In the code above, we make a GET request to the '/api/users' endpoint and expect the response code to be 200. We then use the expect function from the chai library to verify that the response body is an array and that its length is equal to 0.
Conclusion
Supertest is an essential tool for testing web applications. Its simple and easy-to-use interface makes it ideal for developers who want to write expressive and readable tests. In this article, we have discussed Supertest, its usage, and explored its capabilities through code examples. We hope this article has been helpful to you!
let's dive a bit deeper into some of the topics we previously discussed.
Supertest Functions
Supertest provides several HTTP methods that can be used to make requests, including:
- get(url) – Used to make a GET request.
- post(url) – Used to make a POST request.
- put(url) – Used to make a PUT request.
- delete(url) – Used to make a DELETE request.
- head(url) – Used to make a HEAD request.
These functions accept a URL string as an argument, and you can chain methods like expect and end to them to check the response and complete the request.
You can also chain other methods, such as send, query, and set, to customize the request further. For example:
request(app)
.post('/api/users')
.set('Authorization', 'Bearer ' + token)
.send({
name: 'John Doe',
email: 'johndoe@example.com'
})
.expect(201)
.end(function(err, res) {
if (err) {
throw err;
}
console.log('Response:', res.body);
});
In the code above, we first set an Authorization header with a bearer token using the set method, then send a request body using the send method before expecting a response code of 201.
Status Codes
HTTP status codes are standard response codes returned by servers as headers in response to a client's HTTP request. They indicate the outcome of a request and are grouped into five classes as follows:
- 1xx (Informational): The request was received, continuing process.
- 2xx (Successful): The request was successfully received, understood, and accepted.
- 3xx (Redirection): Further action needs to be taken to complete the request.
- 4xx (Client Error): The request contains bad syntax or cannot be fulfilled.
- 5xx (Server Error): The server failed to fulfill an apparently valid request.
Supertest's expect method can be used to verify the response status code. For example:
request(app)
.get('/api/users')
.expect(200)
.end(function(err, res) {
if (err) {
throw err;
}
console.log('Response:', res.body);
});
In the code above, we expect the response code to be 200. If it is not, the test fails.
Conclusion
Supertest is a powerful tool for testing web applications. It provides a simple and intuitive interface that makes it easy to write expressive and readable tests. By using Supertest's functions and methods, you can make requests, customize them, and verify their responses. Understanding HTTP status codes is also critical, as they indicate the outcome of a request and can help you debug issues in your web application.
Popular questions
-
What is Supertest?
Supertest is an NPM module that allows developers to test their HTTP endpoints by making HTTP requests. It facilitates HTTP requests to the web application, and the response can be verified and validated. -
What HTTP methods does Supertest provide?
Supertest provides several HTTP methods, including get, post, put, delete, and head. These methods can be used to make requests, and you can chain methods like expect and end to check the response and complete the request. -
How do you customize requests using Supertest?
You can customize requests by chaining other methods, such as send, query, and set. For example, you can use the set method to set headers or the send method to send a request body. -
How do you check the response status code using Supertest?
Supertest's expect method can be used to verify the response status code. For example, you can use the expect method to check that the response status code is 200. -
What are HTTP status codes, and why are they important?
HTTP status codes are standard response codes returned by servers as headers in response to a client's HTTP request. They indicate the outcome of a request and are grouped into five classes. Understanding HTTP status codes is important because they indicate the outcome of a request and can help you debug issues in your web application.
Tag
Benchmarking