Unit testing

in JavaScript

Theory

What and how to test

Theory > What and how to test

What to test

Unit tests :

testing components, functions and/or classes in isolation.

 

Integration tests :

testing several parts in relation to each other.

 

End-to-end / Functional / Browser tests :

testing the application as a whole.

Theory > What and how to test

How to test

Unit tests :

e.g. Mocha, Jasmine, Jest, Chai, Sinon, Karma, Qunit

 

Integration tests :

Same tools as unit tests.

 

End-to-end / Functional / Browser tests :

Selenium, Protractor

Theory > white box or black box

White box or Black box?

Is a testing method in which the internal structure, the actual code is known bij the tester

 

Used for mainly unit testing and partly by integration tests

 

Done by Developers

 

Programming knowledge and implementation knowledge needed

Is a testing method in which the internal structure, the actual code is NOT known bij the tester

 

Used for mainly end-to-end tests and integration tests

 

Done by (external) Testers

 

Programming knowledge and implementation knowledge is NOT needed

Theory > Unit tests

Unit tests

- Feedback for the developer while coding

- Focus on small units: e.g. class, method, function

- Tested in isolation, dependencies are mocked

- Should be a good bug report

- Should be simple

- Should be fast

Theory > Unit tests

Unit tests

Structure

 

 

describe('Unit to test', function() {
 
    it('should do something', function() {
      //arrange...
      var dummyData = { foo: 'bar' };
      var expected = 'the result we want';
    
      //act...
      var result = functionUnderTest(dummyData);
    
      //assert...
      expect(result).to.equal(expected);
    });
 
});

Theory > Unit tests

Unit tests

Structure

 

 

Mock :

Code that replaces the original dependency  e.g. http call, service, helper and returns 0, "", null, undefined

 

Stub

As mock but it returns actual code, like a function, object and/or methods

 

Spy :

Intercepts the call to the dependency and returns information about how often and with what properties it was called.

Example

What and how to test

Example > What and how to test

What to test

Example > What and how to test

What to test

Setup with:

Yeoman

generator foundation webapp

 

https://www.npmjs.com/package/generator-fountain-webapp

 

Reading material

https://sites.google.com/site/unclebobconsultingllc/

 

Robert Martin (Uncle Bob)

- Clean code

- Ideal Programmer

Unit testing in JavaScript

By tietyk

Unit testing in JavaScript

Theory and practical examples about unit testing in Javascript

  • 1,145