til,

Wrote my first unit test using Jest!

Sumeet Sumeet Follow Jul 14, 2020 · 3 mins read
Wrote my first unit test using Jest!
Share this

So finally, today was the day when I started implementing the unit test cases for the application I have been working on since some time. The development for the application is not over yet - meaning it doesn’t yet do everything it is supposed to do, but it is at a level where I call it “usable”. Having addressed the linting errors and the code review feedback, I think now would be the good time to implement unit test cases for the current code base. Eventually this would be required for the DevOps build process.

It is not a huge code base to manage currently and something deep inside my mind told me that now would be the good time to start writing unit test scripts. I will be honest here, writing unit test cases is completely new to me and this is literally the first time I am doing this. Since I am using NodeJS, I chose Jest Javascript testing framework because it was highly recommended. So much so that I was intrigued to dig into it already. I did a bit of research last week to get initial impressions of Jest but it was not the correct time to use it then.

Writing unit test cases in Jest for NodeJS is really easy. I am sure it is the same for other areas like front-end frameworks, Typescript and Babel. Jest uses “matchers” to match the output of functions or expressions with expectations. It expresses these tests in a similar syntax. Below is an example of a sample test.

This is a describe function which describes the test being performed. describe takes a callback function as the 2nd parameter which defines the test step. The it function has a test step level description, which comes in very handy when the test results are printed on the console. it takes in the 2nd parameter as a callback function which establishes the rule to decide whether the test was successful or not. The rule goes like this: expect some expression toBe this value.

import { greeter } from 'greeter';

describe('Greet test.', () => {
  it('should greet with name', () => {
    expect(greeter.greet('Sumeet')).toBe('Hello, Sumeet');
  })
});

The expression used here is a function greet on greeter class. It basically accepts string as a parameter and returns the same appended with Hello, . In this test, we are passing the sample string as Sumeet after which we want to make sure the function correctly returns Hello, Sumeet.

toBe is just one example and there are so many more matchers which are very helpful to establish these rules. I obviously need to spend more time on unit test cases before I proceed to write integration test cases. I will do another post to register any interesting observations here.

Join Newsletter
Get the latest news right in your inbox!
Sumeet
Written by Sumeet Follow
Hi, I am Sumeet, and I believe the world belongs to the doers. Here, I publish my technical tinkering experiences. I hope you like it!