Spec-Zone.ru › Sinon.JS 13

Фейки

Введение

fake доступен в Sinon начиная с версии 5. Он позволяет создавать fake Function с возможностью установить поведение по умолчанию. Доступные поведения в основном соответствуют API sinon.stub.

В Sinon, fake — это Function, который записывает аргументы, возвращаемое значение, значение this и выброшенное исключение (если таковое есть) для всех вызовов.

Фейк неизменяем: после создания его поведение не изменится.

В отличие от sinon.spy и sinon.stub методов, API sinon.fake знает только как создавать фейки и не занимается их подстановкой в тестируемую систему. Для подстановки фейков в тестируемую систему можно использовать методы sinon.replace*.

Когда использовать фейки?

Фейки являются альтернативой Stubs и Spies и могут полностью заменить все их применения.

Они предназначены для более простого использования и избегают многих ошибок благодаря неизменяемому поведению.

Созданный fake Function, с поведением или без него, имеет тот же API, что и (sinon.spy)шпионы.

Использование фейков вместо шпионов

Использование фейков вместо заглушек

Создание фейка

Создайте fake Function с поведением или без него. Созданный Function имеет тот же API, что и sinon.spy.

Создание фейка без поведения

Создание фейка с пользовательским поведением

Фейки с поведением

Фейки не могут быть изменены после создания с поведением.

sinon.fake.returns(value);

Создаёт фейк, который возвращает value аргумент.

sinon.fake.throws(value);

Создаёт фейк, который выбрасывает Error со значением, указанным в качестве свойства message.

Если в качестве аргумента value передаётся Error, то это значение и будет значением свойства message выброшенного Error. В противном случае, переданное значение используется в качестве свойства message выброшенного Error.

sinon.fake.resolves(value);

Создаёт фейк, который возвращает разрешённое Promise для переданного значения.

sinon.fake.rejects(value);

Создаёт фейк, который возвращает отклонённое Promise для переданного значения.

Если в качестве аргумента value передаётся Error, то это значение и будет значением обещания. В противном случае, переданное значение используется в качестве свойства message Error возвращённого обещанием.

sinon.fake.yields([value1, ..., valueN]);

sinon.fake.yields принимает некоторые значения и возвращает функцию, которая, когда вызывается, ожидает последним аргументом обратный вызов и вызывает этот обратный вызов с теми же ранее заданными значениями. Возвращённая функция обычно используется для имитации функции службы, которая принимает обратный вызов в качестве последнего аргумента.

В примере кода ниже функция «readFile» модуля «fs» заменяется на фейковую функцию, созданную с помощью sinon.fake.yields. При вызове фейковой функции она всегда вызывает последний полученный аргумент, который ожидается как обратный вызов, со значениями, которые функция yields ранее приняла.

sinon.fake.yieldsAsync([value1, ..., valueN]);

Аналогично yields, yieldsAsync также возвращает функцию, которая при вызове ожидает последним аргументом обратный вызов и вызывает этот обратный вызов с теми же ранее переданными значениями. Однако возвращаемая функция вызывает обратный вызов асинхронно, а не немедленно, т. е. в следующей очереди событий.

Сравните пример кода ниже с примером кода выше для yields чтобы увидеть разницу.

sinon.fake(func);

Оборачивает существующую Function для записи всех взаимодействий, оставляя за func предоставление поведения.

Созданный fake Function имеет тот же API, что и sinon.spy.

Это полезно, когда требуется сложное поведение, не охваченное методами sinon.fake.*, или при обёртке существующей функции или метода.

Свойства экземпляра

Свойства экземпляра такие же, как у sinon.spy. Следующие примеры показывают лишь некоторые доступные вам свойства. Для получения полного списка обратитесь к документации шпионов.

f.callback

Это свойство — удобный способ получить ссылку на последний обратный вызов, переданный в фейк. Такая же удобство добавлена к вызовам шпионов.

f.firstArg

Это свойство — удобный способ получить ссылку на первый аргумент, переданный в последний вызов фейка. Такая же удобство добавлена к вызовам шпионов.

f.lastArg

Это свойство — удобный способ получить ссылку на последний аргумент, переданный в последний вызов фейка. Такая же удобство добавлена к вызовам шпионов.

Добавление фейка в тестируемую систему

В отличие от sinon.spy и sinon.stub, sinon.fake знает только как создавать фейки, а не как заменять свойства в тестируемой системе.

Чтобы заменить свойство, используйте метод sinon.replace. Чтобы восстановить изменённые свойства, вызовите метод sinon.restore.

© 2010–2022 Christian Johansen
Licensed under the BSD License.
https://sinonjs.org/releases/v13/fakes

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API