# AAAパターン

テストの準備 (Arrange)、実行 (Act)、検証 (Assert) を区別しましょう。これらが混ざっていると事前条件やテスト項目が分かりにくくなります。

❌

test("add - 1 + 2 returns 3", () => {
  expect(new Calculator().add(1, 2)).toBe(3);
})

⭕️

test("add - 1 + 2 returns 3", () => {
  // Arrange
  const sut = new Calculator();

  // Act
  const actual = sut.add(1, 2);

  // Assert
  const expected = 3;
  expect(actual).toBe(expected);
})

なお、sut (system under test) はテスト対象、actual は検証する値、expected は期待値としてよく使われる名前です。

NOTE

✏️ テストの準備、実行、検証を区別する