Код IT
← Каталог

Объекты и уровни тестирования — Моки (*Mocks*)

Фрагмент из «Объекты и уровни тестирования»: Моки (*Mocks*).

javascript projectencyclopedia7-05-testirovanie-117 embed URL статья в энциклопедии
JavaScript main.js
// Сервис уведомлений: важно, ЧТО вызвали, а не что вернулось
async function onUserRegistered(user, notifications) {
  await notifications.send({
    to: user.email,
    subject: 'Добро пожаловать',
    body: `Здравствуйте, ${user.name}`,
  });
}

// --- тест (sinon) ---
const sinon = require('sinon');

test('после регистрации отправляется одно приветственное письмо', async () => {
  const mailer = { send: sinon.stub().resolves() };
  const user = { name: 'Аня', email: 'anya@example.com' };

  await onUserRegistered(user, mailer);

  sinon.assert.calledOnce(mailer.send);
  sinon.assert.calledWith(mailer.send, {
    to: 'anya@example.com',
    subject: 'Добро пожаловать',
    body: 'Здравствуйте, Аня',
  });
});
// Сервис уведомлений: важно, ЧТО вызвали, а не что вернулось
async function onUserRegistered(user, notifications) {
  await notifications.send({
    to: user.email,
    subject: 'Добро пожаловать',
    body: `Здравствуйте, ${user.name}`,
  });
}

// --- тест (sinon) ---
const sinon = require('sinon');

test('после регистрации отправляется одно приветственное письмо', async () => {
  const mailer = { send: sinon.stub().resolves() };
  const user = { name: 'Аня', email: 'anya@example.com' };

  await onUserRegistered(user, mailer);

  sinon.assert.calledOnce(mailer.send);
  sinon.assert.calledWith(mailer.send, {
    to: 'anya@example.com',
    subject: 'Добро пожаловать',
    body: 'Здравствуйте, Аня',
  });
});