Статья Поднимите свою игру Mocktail на новый уровень с помощью Sinon.js: увлекательный способ протестировать свой код была впервые опубликована в четверг, 5 января 2023 г., в Блоге технических разработчиков. >». Для получения новейшего актуального контента, только что из печи, посетите https://techdevblog.io и подпишитесь на нашу рассылку!

Добро пожаловать в совершенный Sinon.js и посмотрите, как он может помочь нам создавать моки в нашем коде JavaScript.

Начиная

Но прежде чем мы углубимся, давайте удостоверимся, что Sinon.js установлен и готов к работе.

Чтобы установить Sinon.js с помощью пряжи, другого популярного менеджера пакетов для JavaScript:

yarn add sinon

If you prefer not to use a package manager, you can also download the Sinon.js is its ability to create “spies.” A spy is a function that records arguments, return value, the value of this, and exception thrown (if any) for all of its calls. Spies are useful for verifying the behavior of a function that is called indirectly by the code under test, or for stubbing a function that has side effects.

To create a spy with Sinon.js, you can use the sinon.stub function. Here's an example:

const stub = sinon.stub().returns(10);

Once you have a stub, you can use it to replace the behavior of a function. For example, you can use the returns method to specify the return value of the stub, or the throws method to throw an exception when the stub is called.

const stub = sinon.stub().returns(10);

function foo() {
  return stub();
}

console.log(foo()); // 10
const stub = sinon.stub().throws(new Error('Boom!'));

function foo() {
  return stub();
}

try {
  foo();
} catch (error) {
  console.log(error)
}

Mocks

In addition to creating spies and stubs, Sinon.js also provides a way to create “mocks.” A mock is an object that combines the behavior of a spy and a stub, and it’s useful for verifying the interaction between different units of code.

To create a mock with Sinon.js, you can use the sinon.mock function. Here's an example:

const mock = sinon.mock({ foo: () => 10 });

Когда у вас есть макет, вы можете использовать его для проверки взаимодействия между различными единицами кода. Например, вы можете использовать метод expects, чтобы указать ожидаемое поведение макета, и метод verify, чтобы проверить, был ли вызов макета ожидаемым.

const mock = sinon.mock({ foo: () => 10 });

mock.expects('foo').once();

function foo() {
  mock.foo();
}

foo();

mock.verify(); // passes

Поддельное время

Помимо создания макетов, Sinon.js также предоставляет возможность создания фальшивых таймеров. Поддельные таймеры полезны для тестирования кода, который зависит от текущего времени, и они позволяют вам контролировать течение времени в ваших тестах.

Чтобы создать поддельный таймер с помощью Sinon.js, вы можете использовать функцию sinon.useFakeTimers. Вот пример:

sinon.useFakeTimers();

Once you have a fake timer, you can use it to control the flow of time in your tests. For example, you can use the tick method to advance the timer by a specific amount of time, or the reset method to reset the timer to its initial value.

sinon.useFakeTimers();

setTimeout(() => console.log('Hello, world!'), 1000);

sinon.tick(1000);
sinon.useFakeTimers();

setTimeout(() => console.log('Hello, world!'), 1000);

sinon.tick(1000);
sinon.reset();

Заключение

Вот и все! Теперь вы знаете основы того, как использовать Sinon.js для создания моков, шпионов, заглушек и фальшивых таймеров в вашем коде JavaScript. Имея в своем распоряжении эти мощные инструменты, вы сможете писать более надежные и надежные тесты для своего кода и будете на пути к тому, чтобы стать профессионалом в области тестирования JavaScript. Приятного издевательства!

Статья Поднимите свою игру Mocktail на новый уровень с помощью Sinon.js: увлекательный способ протестировать свой код была впервые опубликована в четверг, 5 января 2023 г., в Блоге технических разработчиков. >». Для получения новейшего актуального контента, только что из печи, посетите https://techdevblog.io и подпишитесь на нашу рассылку!