JS JavaScript  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Тестирование JavaScript-кода

Профессиональный тест о модульных проверках, подменах, асинхронных сценариях и границах покрытия. Задания требуют выбирать наблюдаемое поведение, управлять временем и Promise, не подменять предмет теста целиком и разбирать нестабильность по причине.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 30 вопросов и 85 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 6 тематических шкал и объяснение каждого решения.
Вопрос 1 из 30
Что проверяет этот тест лучше всего?
JavaScript
it("суммирует цены", () => {
  expect(total([{ price: 2 }, { price: 3 }])).toBe(5);
});
Вопрос 2 из 30
Какой граничный случай особенно нужен для average?
JavaScript
function average(values) {
  return values.reduce((a,b)=>a+b,0) / values.length;
}
Вопрос 3 из 30
Зачем table-driven test для нескольких форматов?
JavaScript
it.each([
  ["  A ", "a"],
  ["Ёж", "ёж"],
  ["", ""],
])("нормализует %p", (input, expected) => {
  expect(normalize(input)).toBe(expected);
});
Вопрос 4 из 30
Почему тест приватной функции через rewire хрупок?
Вопрос 5 из 30
Что даёт property-based проверка encode/decode?
Вопрос 6 из 30
Что подменять в тесте calculateInvoice?
JavaScript
const rates = { get: () => 1.2 };
expect(calculateInvoice(order, rates)).toEqual(expected);
Вопрос 7 из 30
Почему утверждение «logger.info вызван ровно один раз» может быть слишком хрупким?
JavaScript
expect(logger.info).toHaveBeenCalledTimes(1);
Вопрос 8 из 30
Как избежать протекания spy на Date.now между тестами?
JavaScript
const spy = vi.spyOn(Date, "now").mockReturnValue(1000);
// afterEach: vi.restoreAllMocks()
Вопрос 9 из 30
Чем stub отличается от spy в типичном использовании?
Вопрос 10 из 30
Почему глубокий mock всего SDK опасен?
Вопрос 11 из 30
Почему тест ложно проходит?
JavaScript
it("загружает", () => {
  load().then(value => expect(value).toBe(42));
});
Вопрос 12 из 30
Как правильно проверить, что save(invalid) отклоняет Promise с ошибкой «denied»?
JavaScript
// Нужно проверить, что save(invalid)
// отклоняет Promise с ошибкой "denied".
Вопрос 13 из 30
Как детерминированно проверить, что второй запрос отменяет первый?
JavaScript
const first = deferred();
transport.mockReturnValueOnce(first.promise).mockResolvedValueOnce(newData);
const a = search("a");
const b = search("ab");
Вопрос 14 из 30
Почему fake timers не всегда автоматически выполняют Promise.then?
JavaScriptТаймеры и микрозадачи
vi.useFakeTimers();
const promise = Promise.resolve().then(onDone);
vi.runAllTimers();
await promise;
Вопрос 15 из 30
Как проверить timeout без ожидания реальных пяти секунд?
JavaScript
vi.useFakeTimers();
const promise = requestWithTimeout();
await vi.advanceTimersByTimeAsync(5000);
await expect(promise).rejects.toMatchObject({ name: "AbortError" });
Вопрос 16 из 30
Что означает 100% statement coverage?
Вопрос 17 из 30
Почему этот тест может покрыть ветви, но ничего не доказать?
JavaScript
it("covers", () => {
  try { validate(input); } catch {}
});
Вопрос 18 из 30
Что показывает mutation testing?
JavaScript
// Мутант: if (age >= 18) вместо if (age > 18)
Вопрос 19 из 30
Нужно ли тестировать простой getter только ради процента?
Вопрос 20 из 30
Почему branch coverage полезен для a && b?
Вопрос 21 из 30
Почему этот тест падает на границе Нового года в часовом поясе UTC+3?
JavaScript
const now = new Date("2026-12-31T21:30:00Z");
const localKey = new Intl.DateTimeFormat("sv-SE", {
  timeZone: "Europe/Moscow"
}).format(now);
const utcKey = now.toISOString().slice(0, 10);
expect(localKey).toBe(utcKey);
Вопрос 22 из 30
Как найти зависимость от порядка тестов?
Вопрос 23 из 30
Почему случайный seed нужно сохранять?
JavaScript
const rng = createRandom(seed);
const input = generateCase(rng);
Вопрос 24 из 30
Что делать с flaky тестом прежде, чем добавить retry?
Вопрос 25 из 30
Почему snapshot изменился на сотни строк после одного поля?
Вопрос 26 из 30
Почему реальная БД в каждом unit test замедляет и делает набор хрупким?
JavaScript
beforeEach(async () => {
  await resetDatabase();
  await seedLargeFixture();
});
Вопрос 27 из 30
Когда параллельные тесты конфликтуют?
JavaScript
const PORT = 3000;
beforeAll(() => server.listen(PORT));
Вопрос 28 из 30
Как ускорить медленный тест с sleep(1000)?
JavaScript
await sleep(1000);
expect(job.status).toBe("done");
Вопрос 29 из 30
Почему огромная общая fixture ухудшает сопровождение?
Вопрос 30 из 30
Как выбрать E2E-сценарии?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу