karma
- Para execução dos testes
jasmine
- Para o teste
protractor
- Para realizar testes
npm install -g protractor
npm install -g karma-cli
npm install -g phantomjs
npm install -g chrome
npm install -g karma-jasmine
npm install -g karma-phantomjs-laucher
npm install -g karma-chrome-laucher
karma install
karma start
Configurando o Karma
angular.json
"test": {
"options":{
"main": "src/test.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"codeCoverege": true // As vezes esse flag não vem ativado
}
}
karma.conf.js
browsers:['ChromeHeadlessNoSandbox' ]
Para executar o comando:
ng test --code-coverage
import { CartComponent } from './cart.component';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { BookService } from '../../services/book.service';
import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
import { Book } from '../../models/book.model';
const listBook: Book[] = [];
describe('Cart component', () => {
let component: CartComponent;
let fixture: ComponentFixture<CartComponent>;
let service: BookService;
//Configura um modulo
beforeEach( () => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
declarations: [
CartComponent
],
providers: [
BookService
],
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
}).compileComponents();
});
//Treina o mock service
beforeEach( () => {
fixture = TestBed.createComponent(CartComponent);
component = fixture.componentInstance;
fixture.detectChanges();
service = fixture.debugElement.injector.get(BookService);
spyOn(service, 'getBooksFromCart').and.callFake( () => listBook);
});
//Este é um teste
it('should create', () => {
expect(component).toBeTruthy();
});
});