Module tests can be written to test certain Node.js functions:
// Defining function to be testedfunction grade(marks) {if (marks >= 90){return "A"}else if (marks >= 80){return "B"}else if (marks >= 70){return "C"}return "F"}// Calling functiontest0 = grade(95)test1 = grade(90)test2 = grade(80)test3 = grade(70)test4 = grade(69)// Displaying test resultsconsole.log('grade(95) = A: ' + (test0 === 'A'))console.log('grade(90) = A: ' + (test1 === 'A'))console.log('grade(80) = B: ' + (test2 === 'B'))console.log('grade(70) = C: ' + (test3 === 'C'))console.log('grade(69) = F: ' + (test4 === 'F'))
This example tests the grade()
function. The grade()
function takes marks as an integer and returns the corresponding grade. To test the return values, the expected results of normal cases and border cases are compared with actual results for equivalence.
Normal cases are situations where parameters are comfortably within the bounds. The only normal case being tested here is grade(95)
.
Border cases are situations where the parameters are on the edge of giving different results. Other than the one normal case mentioned above, all tests are border cases. Take grade(80)
, for example, it’s on the border of a B and a C but is expected to return a B.
To run Node.js in a terminal, the following command is used:
Node <filename>
Here, <filename>
is the name of the Node.js file. If the filename was grade.js, the command would look like:
Node grade.js
As seen in the example, the file extension, .js
, is also expected in the console command.
Another way to test functions is through specialized testing libraries. In Node.js, there is a simple, fast testing library called Mocha.
To install Mocha globally, the following script is used:
npm i --global mocha
Mocha has an expectation library called Chai. To install it, use the following script:
npm install --save mocha chai
After installing Chai, some changes need to be made to the code. Also, the test file should be inside a directory called test that inside the root folder:
var expect = require("chai").expect;// Defining function to be testedfunction grade(marks) {if (marks >= 90){return "A"}else if (marks >= 80){return "B"}else if (marks >= 70){return "C"}return "F"}// describe() describes what the test is testingdescribe("Grade function", function() {describe("Testing A", function(){// it describes what is expected of the functionit("Returns an A grade", function(){// Running the functiontest0 = grade(95)test1 = grade(90)// Comparing the results to expectationsexpect(test0).to.equal("A");expect(test1).to.equal("A");})})describe("Testing B", function(){it("Returns an B grade", function(){test2 = grade(80)expect(test0).to.equal("B");})})describe("Testing C", function(){it("Returns an C grade", function(){test0 = grade(70)expect(test0).to.equal("C");})})describe("Testing F", function(){it("Returns an F grade", function(){test0 = grade(69)expect(test0).to.equal("F");})})})
This example demonstrates how Mocha is used. The describe()
function uses its first argument to describe the code block or lambda function in its second argument. Here, we described that the Grade function is being tested and a nested describe function described that we were testing the A
condition. it()
functions describe what is expected from the tests being run inside it. Its parameters are similar to those of describe()
, but the actual test is run inside the it()
function. Comparisons of the results are made with the expectations using the expect()
function. Here, simple equivalence checks were used with expect()
functions.
The test can be run using the following script in the console:
npm test
Once you follow this command, the results of the test will be displayed on the terminal.