// App
import { Component, Input } from '@angular/core';
@Component({
selector: 'list',
template: '{{ user }}',
})
export class ListComponent {
@Input() public users: Array = [];
}
// App tests
import { async, inject, TestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
describe('ListComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ListComponent]
});
this.fixture = TestBed.createComponent(ListComponent);
});
it('should render list', async(() => {
const element = this.fixture.nativeElement;
this.fixture.componentInstance.users = ['John'];
this.fixture.detectChanges();
expect(element.querySelectorAll('span').length).toBe(1);
}));
});
// App DI
class UserService {
public users: Array = ['John'];
}
@Component({
selector: 'list',
template: '{{ user }}',
})
class ListComponentBootstrapDI {
private users: Array = [];
constructor(userService: UserService) {
this.users = userService.users;
}
}
class MockUserService {
public users: Array = ['John', 'Steve'];
}
describe('ListComponent DI', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ListComponentBootstrapDI],
providers: [{ provide: UserService, useClass: MockUserService }],
});
this.fixture = TestBed.createComponent(ListComponentBootstrapDI);
});
it('should render list', async(() => {
const element = this.fixture.nativeElement;
this.fixture.detectChanges();
expect(element.querySelectorAll('span').length).toBe(2);
}));
});
// App DI for Component
@Component({
selector: 'list',
template: '{{ user }}',
providers: [UserService],
})
class ListComponentComponentDI {
private users: Array = [];
constructor(userService: UserService) {
this.users = userService.users;
}
}
// App DI for Component tests
describe('ListComponent DI Component', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ListComponentBootstrapDI],
});
this.fixture = TestBed
.overrideComponent(ListComponentBootstrapDI, {
set: {
providers: [{ provide: UserService, useClass: MockUserService }],
},
})
.createComponent(ListComponentBootstrapDI);
});
it('should render list', async(() => {
const element = this.fixture.nativeElement;
this.fixture.detectChanges();
expect(element.querySelectorAll('span').length).toBe(2);
}));
});