Skip to main content

Unit Testing with Mocha

Image result for mocha unit test

Unit testing is the best way to uncover hidden bugs in your system. JavaScript Community has produced several testing frameworks that will help us with the task of writing Unit Tests. Some of them are Jasmin, Mocha, Jaster, Quint. These are all JavaScript Testing frameworks, that you can use to test JavaScript Code. Today we are going to focus on the Mocha testing framework. Let's go and install Mocha globally that we can use on any of our projects.

$ npm install  -g mocha

To run a Mocha test all you need is to type mocha. But you need to have directory named test. Before running mocha first make sure you have created a directory call test.

$ mocha

Now Mocha is ready to use. Now let's go and create our first test. Create a folder MochaTesting anywhere in your folder. This is the folder we are going to work. Inside that folder create a folder called test. Inside the test, folder create a file call my-test.js

We are going to use Test Driven Development. That means we are going to watch the test fail and then write our code to make our test pass. I am going to use a mocha function called describe(). In the describe function we are going to set up a suite of tests. I am going to describe our printName() function. We are going to test a function called print name. The second argument for the describe function is a callback function. This is where we are going to write all our tests for printName(). 

describe("printName()",function(){
  it("should print the last name first")

});

Now run the test by typing mocha in the MochaTesting directory.


Mocha found our my-test.js file inside our test folder and it created a suit for print name function. We can use it() statement to go and stub our tests.So now go and write the printName() test. In order to write this test first, we need an insertion engine. Mocha gives us a suit for describing, running and building tests but it doesn't give us a way to check values. So we need to use chai. To install chai locally in your project type the following command.

$npm install chai --save-dev

var expect = require("chai").expect;
var tools = require("../script");

describe("printName()",function(){
  it("should print the last name first",function(){
    var result = tools.printName({first:"Dhanuka",last:"Perera"});

    expect(result).to.equal("Perera,Dhanuka");

  });
});


After install, we going need to require in the file. And also we need the include the where our printName() function lives. Still, we haven't created the printName function. But ideally if I create a printName function this is how it should work with it. I should be able to send a object that repesent person. This person should have first name and last name. If I invoke this fucntion printName() I will expect it to return a string with my name. So this is where is going to use expect() fucntion. Now our test is ready. If we run our test now we are getting an error becuse still we haven't implemnt the printName() fucntion. So now lets go create a file call script.js insdide MochaTesting folder.

Inside the script.js file create a printName() fucnton

module.exports = {
   printName(){
  
   }
}

If we run our test, our test will get fail, becuse it don't returing anything.


Now lets go back agin to printName() fucntion and write the code that we need to pass.

module.exports = {
   printName(person){
     return `${person.last},${person.first}`;
   }
}

Now lets go and run our test again.

\
And we getting pass the test and results as expected.

Comments

Popular posts from this blog

Working with Yeoman

Let's take a look at Yeomen. Yeomen is not part of MEAN Stack but allow us to quickly get startup providing us with generators that can create starter temples. It helps to setup the links between some or all the components of MEAN Stack, without having to do it all by hand. We will be focusing  a developing an app with MEAN Stack in the tutorial. Let's begin installing Yeoman using npm . $npm install -g yo Now that yeoman is installed we can next install a generator with it. Let's head to yeoman . io website and click discover generators. We going to use the gulp-angular generator. It will save us a lot of time setting up some tedious tasks that make our development process much faster. Gulp allow us to automate tedious and dependent tasks which are moving files over to publish folder or linking libraries or packages that needed our app. Click the gulp-angular generator and we can see the dependencies we need to install in order to run it. So let's o...

What is an API?

What is an API? The definitions given by WIKIPEDIA - set of   Classes   definitions, protocols, and tools for building   application software. HowStuffWorks- set of programming instructions and standards for accessing a web based software application or web tool. Quora - A contract provided by one piece of computer software to another. If I was to answer that question I will simply say that API is an interface that hires the details of an implementation. For example, the interface retain on a computer has a power button. This is one function of the interface computer manufacture gives us. APIs are usually used for three things. They are used for Performing tasks. For example, we may use tutor’s API to search with reach from Sanfransico.  Retrieving data.  We may use face . -force to achieve receivers friend list.  Manipulating data.  For example, we use android API to add a new contact. What is a web API? A web API...