Skip to content

Commit 2768fda

Browse files
committed
Angular Testing Course
1 parent 25f160d commit 2768fda

File tree

4 files changed

+105
-2
lines changed

4 files changed

+105
-2
lines changed

src/app/app.component.spec.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import {NoopAnimationsModule} from '@angular/platform-browser/animations';
66
import {By} from '@angular/platform-browser';
77

88
describe('AppComponent', () => {
9+
10+
911
beforeEach(async(() => {
1012
TestBed.configureTestingModule({
1113
imports: [
@@ -22,22 +24,34 @@ describe('AppComponent', () => {
2224
}).compileComponents();
2325
}));
2426

27+
28+
2529
it('should create the app', async(() => {
30+
2631
const fixture = TestBed.createComponent(AppComponent);
2732
const app = fixture.debugElement.componentInstance;
2833
expect(app).toBeTruthy();
34+
2935
}));
3036

31-
it(`should have as title 'app'`, async(() => {
37+
38+
39+
it(`should have a title property`, async(() => {
40+
3241
const fixture = TestBed.createComponent(AppComponent);
3342
const app = fixture.debugElement.componentInstance;
3443
expect(app.title).toEqual('Angular Testing Course');
44+
3545
}));
3646

37-
it('should render home component title', async(() => {
47+
48+
49+
it('should have a navigation menu', async(() => {
50+
3851
const fixture = TestBed.createComponent(AppComponent);
3952
fixture.detectChanges();
4053
expect(fixture.debugElement.queryAll(By.css('mat-toolbar'))).toBeTruthy();
54+
4155
}));
4256

4357
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import {CalculatorService} from './calculator.service';
2+
import {LoggerService} from './logger.service';
3+
4+
5+
describe('CalculatorService', () => {
6+
7+
let calculator: CalculatorService,
8+
loggerSpy:any;
9+
10+
beforeEach(() => {
11+
12+
console.log("Calling beforeEach()");
13+
14+
loggerSpy = jasmine.createSpyObj('LoggerService', ['log']);
15+
16+
loggerSpy.log.and.returnValue(undefined);
17+
18+
calculator = new CalculatorService(loggerSpy);
19+
20+
});
21+
22+
it("should add two numbers", () => {
23+
24+
const result = calculator.add(2, 2);
25+
26+
expect(result).toBe(4);
27+
28+
expect(loggerSpy.log.calls.count())
29+
.toBe(1, 'logger method should only be called once');
30+
31+
expect(loggerSpy.log).toHaveBeenCalledWith("Addition operation called");
32+
33+
});
34+
35+
36+
it("should subtract two numbers", () => {
37+
38+
const result = calculator.subtract(2, 2);
39+
40+
expect(result).toBe(0);
41+
42+
expect(loggerSpy.log.calls.count())
43+
.toBe(1, 'logger method should only be called once');
44+
45+
expect(loggerSpy.log).toHaveBeenCalledWith("Subtraction operation called");
46+
47+
});
48+
49+
});
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import {Injectable} from '@angular/core';
2+
import {LoggerService} from './logger.service';
3+
4+
5+
@Injectable({
6+
providedIn: 'root'
7+
})
8+
export class CalculatorService {
9+
10+
11+
constructor(private logger: LoggerService) {
12+
13+
}
14+
15+
add(n1: number, n2:number) {
16+
this.logger.log("Addition operation called");
17+
return n1 + n2;
18+
}
19+
20+
subtract(n1: number, n2:number) {
21+
this.logger.log("Subtraction operation called");
22+
return n1 - n2;
23+
}
24+
25+
26+
}
27+

src/app/services/logger.service.ts

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import {Injectable} from '@angular/core';
2+
3+
4+
@Injectable({
5+
providedIn: 'root'
6+
})
7+
export class LoggerService {
8+
9+
log(message:string) {
10+
console.log(message);
11+
}
12+
13+
}

0 commit comments

Comments
 (0)