...

/

Testing Node.js Applications

Testing Node.js Applications

Learn how to test Node.js applications using Jest, covering unit testing and mocking external dependencies.

Testing is a critical part of modern software development, ensuring that applications behave as expected and maintain reliability as they grow. In Node.js, testing helps verify that the functions, modules, and APIs work correctly, especially in complex, asynchronous environments. Jest, a popular testing framework, is well-suited for Node.js applications, offering built-in assertion libraries, support for asynchronous code, and mocking capabilities.

By incorporating Jest into the development workflow, we can catch bugs early, improve code quality, and gain confidence in the application’s behavior.

Setting up Jest in a Node.js project

To start testing with Jest, we first need to install and configure it in the project. Execute the command below to add Jest as a development dependency:

npm install jest --save-dev

After installation, update the package.json file by adding a test script to the project:

{
"scripts": {
"test": "jest"
}
}

Or, we can also add the test script in the package.json file using the command:

npm pkg set scripts.test="jest"

Now, we are all set to use Jest in our project.

Writing unit tests with Jest

The next step is to write unit tests with Jest. Unit tests focus on testing individual functions or components in isolation, ensuring they work as expected under different scenarios. These tests help identify bugs early, simplify debugging, and increase confidence when making changes to the codebase. Let’s start by creating a simple function to test and then write unit tests for it. 

function calculateSum(a, b) {
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error('Inputs must be numbers');
}
return a + b;
}
module.exports = { calculateSum };
The math.js file contains a utility function to calculate the sum of two numbers

Explanation

  • Line 1: Define the calculateSum function, which accepts two parameters, a and b.

  • Lines 2–4: Add a validation step to ensure both inputs are numbers. If either input is not a number, an error is thrown with a descriptive message.

  • Line 5: If the inputs are valid, the function returns their sum.

  • Line 8: Export the calculateSum function using module.exports, making it available for import in other files.

This simple function ...