1️⃣
[読書メモ]オブジェクト設計スタイルガイド 1章10節 with TypeScript
初めに
オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
1.10 ユニットテスト
テストメソッドの構造
- Arrange
- Act
- Assert
export class Mutable {
constructor(private _count: number) {}
public add() {
this._count++;
}
get count() {
return this._count;
}
}
テスト
test("Mutable add", () => {
// Arrange
const mu = new Mutable(0);
//Act
mu.add();
// Assert
expect(mu.count).toBe(1);
});
テストダブル
mockやスタブと呼ばれる代替オブジェクトで置換することがある。
interface Mailer {
send(): void;
}
class SendMail {
mailer: Mailer;
constructor(mailer: Mailer) {
this.mailer = mailer;
}
}
テスト
// TypeScript + Jestだと具体を用意していなくてもモックできる
const mockActualMail: jest.Mocked<Mailer> = {
send: jest.fn(),
};
test("mock", () => {
// Arrange
const m = new SendMail(mockActualMail);
// Act
m.mailer.send();
// Assert
// ActualMailのsendメソッドが呼び出されたことを確認
expect(mockActualMail.send).toHaveBeenCalledTimes(1);
});
1.11 動的配列
特になし(本の中では配列は動的配列として扱うよというだけ)
1.12 まとめ
略
Discussion