Introduction
Jasmine is an open source behavior-driven development (BDD) framework for testing JavaScript code. Jasmine does not have dependencies on any JavaScript framework, and it does not need a Document Object Model (DOM).
A Jasmine test suite starts by calling the global
describe function that takes two distinct
parameters - a string and a function. The string is where you give a
name for the suite, describing what you are testing. The function
parameter executes the tests (also called specs).
describe("some suite", function() {
});
A spec is a test which is set by calling the global Jasmine function
it inside the
describe block.
it is an individual test specification.
it also takes two parameters - a string
and a function. The string parameter is where the title of the spec is
set and the function parameter is the spec itself.
describe("some suite", function() {
it("some spec", function() {
});
});
Inside the spec are expectations which comprises of the
expect function taking an actual value
chained to another function which takes the expected value, called the
matcher function.
Matchers perform a boolean comparison between the actual value and the
expected value based on which Jasmine passes or fails the spec.
toBe is one of the common Jasmine matcher,
which is the equivalent of the === operator. Below is an example of a
spec using the toBe matcher for checking
whether the addition of 1+1 is correct or not
describe("Addition", function() {
it("1+1 equals 2", function() {
expect(1+1).toBe(2);
});
});
A callback function can also be passed as a parameter to the
expect function. Below we make use of the
toEqual matcher to match the return value
of the pi function against the number
3.141.
function pi() {
return 3.141;
}
describe("Pi", function() {
it("equals 3.141", function() {
expect(pi()).toEqual(3.141);
});
});
The toEqual() matcher is similar to the
toBe() matcher in testing primitives
(numbers, strings, booleans) but differs in object-level testing. More
on the difference between toEqual() and
toBe() matchers can be found here:
jasmine-toequal-vs-tobe.html
More on Jasmine default matchers can be found under the following link http://jasmine.github.io/2.0/introduction.html