Error Handling
Error: assert.throws で失敗の契約を確かめる
不正な入力に対して投げる Error の型を、テストで明示します。
Sourcedivision.ts
Node.js 22
export function divide(dividend: number, divisor: number): number {
if (divisor === 0) throw new RangeError("divisor must not be zero");
return dividend / divisor;
}Testdivision.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { divide } from "../../src/exception/division.js";
test("ゼロで割るとRangeErrorが送出される", () => {
assert.equal(divide(6, 2), 3);
assert.throws(() => divide(1, 0), RangeError);
});01Assertion
このテストで確認できること
- ゼロ以外の除数なら商を返す
- ゼロ除算では RangeError を送出する
失敗を握りつぶさず、利用者が扱うべきエラーの種類をテストで固定します。
OBSERVED RESULT
expected exception: divide(1, 0) → RangeError
actual: RangeError