The Jasmine is a test framework provides for
JavaScript to write tests and the aim of Jasmine to run on any JavaScript
enabled platform like AngularJs, Angular, and Node.js and so on.
It is easy to read and write the tests and this
test runner executes tests in the browsers.
The Jasmine previously developed a similar unit
testing framework called JsUnit.
The package.json
contents should now have the following -
"devDependencies":
{
"@angular/cli":
"1.5.0",
"@angular/compiler-cli":
"^5.0.0",
"@angular/language-service":
"^5.0.0",
"@types/jasmine":
"~2.5.53",
"@types/jasminewd2":
"~2.0.2",
"@types/node":
"~6.0.60",
"codelyzer":
"~3.2.0",
"jasmine-core":
"~2.6.2",
"jasmine-spec-reporter":
"~4.1.0",
"karma":
"~1.7.0",
"karma-chrome-launcher":
"~2.1.1",
"karma-cli":
"~1.0.1",
"karma-coverage-istanbul-reporter":
"^1.2.1",
"karma-jasmine":
"~1.1.0",
"karma-jasmine-html-reporter":
"^0.2.2",
"protractor":
"~5.1.2",
"ts-node":
"~3.2.0",
"tslint":
"~5.7.0",
"typescript":
"~2.4.2"
}
Jasmine provides a rich set of Pre-defined Matchers
- default set of matchers
1. expect(number).toBeGreaterThan(number);
2. expect(number).toBeLessThan(number);
3. expect(array).toContain(member);
4. expect(array).toBeArray();
5. expect(fn).toThrow(string);
6. expect(fn).toThrowError(string);
7. expect(instance).toBe(instance);
represents the exact equality (===) operator.
8. expect(mixed).toBeDefined();
9. expect(mixed).toBeFalsy();
10. expect(mixed).toBeNull();
11. expect(mixed).toBeTruthy();
12. expect(mixed).toBeUndefined();
13. expect(mixed).toEqual(mixed); represents the regular equality (==)
operator.
14. expect(mixed).toMatch(pattern); calls the RegExp match() method behind the
scenes to compare string data.
15. expect(number).toBeCloseTo(number,
decimalPlaces);
16. expect(number).toBeNaN();
17. expect(spy).toHaveBeenCalled();
18. expect(spy).toHaveBeenCalledTimes(number);
19. expect(date).toBeAfter(otherDate);
20. expect(date).toBeBefore(otherDate);
21. expect(date).toBeDate();
22. expect(date).toBeValidDate();
23. expect(object).toHaveDate(memberName);
24. expect(object).toHaveDateAfter(memberName,
date);
25. expect(object).toHaveDateBefore(memberName,
date);
26. expect(regexp).toBeRegExp();
27. expect(string).toBeEmptyString();
28. expect(string).toBeHtmlString();
29. expect(string).toBeIso8601();
30. expect(string).toBeJsonString();
31. expect(string).toBeLongerThan();
32. expect(string).toBeString();
Default
set of Asymmetric Matchers-
1. jasmine.any(Constructor);
2. jasmine.anything(mixed);
3. jasmine.arrayContaining(mixed);
4. jasmine.objectContaining(mixed);
5. jasmine.stringMatching(pattern);
Example
- By Karma and Jasmine in Angular Apps
import
{ TestBed, async
} from '@angular/core/testing';
import
{ AppComponent } from
'./app.component';
describe('AppComponent',
() => {
beforeEach(async(()
=> {
TestBed.configureTestingModule({
declarations: [
AppComponent
],
}).compileComponents();
}));
it('should create the
app', async(()
=> {
const fixture
= TestBed.createComponent(AppComponent);
const app
= fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
}));
it(`should have as
title 'app'`, async(()
=> {
const fixture
= TestBed.createComponent(AppComponent);
const app
= fixture.debugElement.componentInstance;
expect(app.title).toEqual('app');
}));
it('should render
title in a h1 tag', async(()
=> {
const fixture
= TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled
= fixture.debugElement.nativeElement;
expect(compiled.querySelector('h1').textContent).toContain('Welcome
to app!');
}));
});
I hope you are enjoying with this post! Please
share with you friends!! Thank you!!!