0
0
Expressframework~5 mins

Middleware testing strategies in Express

Choose your learning style9 modes available
Introduction

Middleware helps handle requests in Express apps. Testing it ensures your app works right and handles errors well.

You want to check if middleware correctly modifies request or response objects.
You need to verify middleware calls next() to pass control properly.
You want to test error handling middleware to catch and respond to errors.
You want to confirm middleware runs in the right order.
You want to test authentication or logging middleware behavior.
Syntax
Express
function middleware(req, res, next) {
  // your code here
  next();
}

Middleware functions take three arguments: req, res, and next.

Call next() to pass control to the next middleware or route handler.

Examples
This middleware logs the HTTP method and URL, then passes control.
Express
function logger(req, res, next) {
  console.log(`${req.method} ${req.url}`);
  next();
}
Error-handling middleware has four arguments and sends a 500 response.
Express
function errorHandler(err, req, res, next) {
  res.status(500).send('Server error');
}
Sample Program

This example shows two middlewares: one adds a property to the request, the other checks it and sends a response. The test uses supertest to simulate a request and prints the response text.

Express
import express from 'express';
import request from 'supertest';

const app = express();

// Middleware to add a property
function addProperty(req, res, next) {
  req.custom = 'test';
  next();
}

// Middleware to check property
function checkProperty(req, res, next) {
  if (req.custom === 'test') {
    res.send('Property found');
  } else {
    res.status(400).send('Property missing');
  }
}

app.use(addProperty);
app.get('/', checkProperty);

// Test using supertest
async function runTest() {
  const response = await request(app).get('/');
  console.log(response.text);
}

runTest();
OutputSuccess
Important Notes

Use tools like supertest to simulate HTTP requests for testing middleware.

Always test that next() is called to avoid hanging requests.

Test error middleware separately by simulating errors.

Summary

Middleware testing ensures your Express app handles requests correctly.

Use simulated requests to check middleware behavior and responses.

Remember to test normal and error cases for full coverage.