Testing TypeScript Code
Simple Assertions
A small assertion helper can compare actual and expected values during a test.
assertion
An assertion turns a condition into a pass or fail result that can be counted and reported.
Simple Assertions
assertions.ts
Replay: real traced execution (multi-file project)
function addTax(cents: number, rate: number): number {
return Math.round(cents * (1 + rate));
}
function assertEqual(actual: number, expected: number): boolean {
return actual === expected;
}
const rate: number = 0.10;
const actual: number = addTax(1000, rate);
const expected: number = rate === 0.10 ? 1100 : 1200;
const passed: boolean = assertEqual(actual, expected);
console.log(passed ? `pass:${actual}` : `fail:${actual}`);
function addTax(cents: number, rate: number): number {
return Math.round(cents * (1 + rate));
}
function assertEqual(actual: number, expected: number): boolean {
return actual === expected;
}
const rate: number = 0.20;
const actual: number = addTax(1000, rate);
const expected: number = rate === 0.10 ? 1100 : 1200;
const passed: boolean = assertEqual(actual, expected);
console.log(passed ? `pass:${actual}` : `fail:${actual}`);
rate ← 0.1
6 return actual === expected;7}89const rate→ 0.1: number = 0.10; //@rate=0.2010const actual: number = addTax(1000, rate0.1);11const expected: number = rate === 0.10 ? 1100 : 1200;function addTax(cents: number, rate: number): number
1function addTax(cents1000: number, rate0.1: number): number {2 return Math.round(cents * (1 + rate0.1));3}actual ← 1100, expected ← 1100, rate ← 0.1
9const rate: number = 0.10; //@rate=0.2010const actual→ 1100: number = addTax(1000, rate0.1);11const expected→ 1100: number = rate→ 0.1 === 0.10 ? 1100 : 1200;12const passed: boolean = assertEqual(actual1100, expected1100);function assertEqual(actual: number, expected: number): boolean
2 return Math.round(cents * (1 + rate));3}45function assertEqual(actual1100: number, expected1100: number): boolean {6 return actual === expected1100;7}passed ← true
10const actual: number = addTax(1000, rate);11const expected: number = rate === 0.10 ? 1100 : 1200;12const passed→ true: boolean = assertEqual(actual1100, expected1100);1314console.log(passedtrue ? `pass:${actual1100}` : `fail:${actual}`);outputpass:1100
rate ← 0.2
6 return actual === expected;7}89const rate→ 0.2: number = 0.20;10const actual: number = addTax(1000, rate0.2);11const expected: number = rate === 0.10 ? 1100 : 1200;function addTax(cents: number, rate: number): number
1function addTax(cents1000: number, rate0.2: number): number {2 return Math.round(cents * (1 + rate0.2));3}actual ← 1200, expected ← 1200, rate ← 0.2
9const rate: number = 0.20;10const actual→ 1200: number = addTax(1000, rate0.2);11const expected→ 1200: number = rate→ 0.2 === 0.10 ? 1100 : 1200;12const passed: boolean = assertEqual(actual1200, expected1200);function assertEqual(actual: number, expected: number): boolean
2 return Math.round(cents * (1 + rate));3}45function assertEqual(actual1200: number, expected1200: number): boolean {6 return actual === expected1200;7}passed ← true
10const actual: number = addTax(1000, rate);11const expected: number = rate === 0.10 ? 1100 : 1200;12const passed→ true: boolean = assertEqual(actual1200, expected1200);1314console.log(passedtrue ? `pass:${actual1200}` : `fail:${actual}`);outputpass:1200