環境
MacBook Pro (2.3 GHz 8コアIntel Core i9)
macOS 14.0(23A344)
Homebrew 4.3.8
gh 2.52.0
活用例1
テスト対象クラス
- クラス:
Person
- プロパティ:
name
(名前を格納する文字列)、age
(年齢を格納する数値) - メソッド:
greet()
(挨拶のメッセージを返す)
person.ts
class Person {
constructor(public name: string, public age: number) {}
greet(): string {
return `Hello, my name is ${this.name} and I am ${this.age} years old.`;
}
}
または(上記は可読性が高い、下記は冗長とされる)
person.ts
class Person {
public name: string;
public age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
テストコード
- インスタンス:
person
(Person
クラスのインスタンス) - 生成されたオブジェクト:
Person
クラスのインスタンス(name
プロパティが「Alice」、age
プロパティが「30」となっている。)
person.test.ts
import { Person } from './person';
describe('Person Class', () => {
let person: Person;
beforeEach(() => {
// Personクラスのインスタンスを生成
person = new Person('Alice', 30);
});
it('should store name and age', () => {
// プロパティを確認
expect(person.name).toBe('Alice');
expect(person.age).toBe(30);
});
it('should return a greeting message', () => {
// メソッドの動作を確認
expect(person.greet()).toBe('Hello, my name is Alice and I am 30 years old.');
});
});
活用例2
テスト対象クラス
- クラス:
Calculator
- プロパティ: 特になし(この例ではプロパティを使用していません)
- メソッド:
add(a: number, b: number): number
(2つの数値を加算)、subtract(a: number, b: number): number
(2つの数値を減算)
calculator.ts
class Calculator {
add(a: number, b: number): number {
return a + b;
}
subtract(a: number, b: number): number {
return a - b;
}
}
テストコード
- インスタンス:
calculator
(Calculatorクラスのインスタンス) - 生成されたオブジェクト:
Calculator
クラスのインスタンスで、メソッドとしてadd
とsubtract
を持つ。
calculator.test.ts
import { Calculator } from './calculator';
describe('Calculator Class', () => {
let calculator: Calculator;
beforeEach(() => {
// Calculatorクラスのインスタンスを生成
calculator = new Calculator();
});
it('should add two numbers correctly', () => {
// addメソッドの動作を確認
expect(calculator.add(2, 3)).toBe(5);
});
it('should subtract two numbers correctly', () => {
// subtractメソッドの動作を確認
expect(calculator.subtract(5, 3)).toBe(2);
});
});