テスト
テストはリリースよりも重要です。テストがない、またはテスト量が不十分な場合、コードをリリースするたびに既存機能が破壊されていないか確信が持てません。適切なテスト量の基準はチームによって異なりますが、100%カバレッジ(全命令文とブランチの網羅)を達成することで、開発者の高い確信度と安心感を得られます。つまり優れたテストフレームワークに加え、適切なカバレッジツールの使用が不可欠です。
テストを作成しない言い訳は存在しません。多数の優れたJSテストフレームワークが利用可能なため、チームの好みに合ったものを選択してください。選択後は、新機能/モジュールの追加時に必ず対応するテストを作成するようにしてください。テスト駆動開発(TDD)を採用するのは理想的ですが、重要なのは新規機能のリリース時や既存機能のリファクタリング前に、必ずカバレッジ目標を達成し、安心して開発に取り組める環境を確保することです。
1テスト1コンセプト
悪い例:
javascript
import assert from "assert";
describe("MomentJS", () => {
it("handles date boundaries", () => {
let date;
date = new MomentJS("1/1/2015");
date.addDays(30);
assert.equal("1/31/2015", date);
date = new MomentJS("2/1/2016");
date.addDays(28);
assert.equal("02/29/2016", date);
date = new MomentJS("2/1/2015");
date.addDays(28);
assert.equal("03/01/2015", date);
});
});良い例:
javascript
import assert from "assert";
describe("MomentJS", () => {
it("handles 30-day months", () => {
const date = new MomentJS("1/1/2015");
date.addDays(30);
assert.equal("1/31/2015", date);
});
it("handles leap year", () => {
const date = new MomentJS("2/1/2016");
date.addDays(28);
assert.equal("02/29/2016", date);
});
it("handles non-leap year", () => {
const date = new MomentJS("2/1/2015");
date.addDays(28);
assert.equal("03/01/2015", date);
});
});