Смысл
Возьми маленькое поведенческое единица поведения, дай контролируемые входы и зависимости, выполни, проверь наблюдаемый результат или побочный эффект.
Практика
- Покрой успех, границы и ошибки.
- Тесты детерминированы и независимы.
- Не мокай каждое звено «ради unit-размера» — иногда integration даёт больше уверенности.
- Имя теста = сценарий + ожидаемый исход.
import { describe, it, expect } from "vitest";
import { formatPrice } from "./formatPrice";
describe("formatPrice", () => {
it("форматирует целые рубли без копеек", () => {
expect(formatPrice(1500, "RUB")).toBe("1 500 ₽");
});
it("отклоняет отрицательную сумму", () => {
expect(() => formatPrice(-1, "RUB")).toThrow(/negative/i);
});
});
Раннеры
Vitest, Jest, Mocha + assert, node:test — выбор вторичен. Важнее, чтобы падение означало реальную регрессию контракта.
Итог: arrange → act → assert вокруг поведения; мокай границы, а не всю вселенную.