Spec-Zone.ru › Sinon.JS 11

Заглушки

Введение

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

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

Заглушка неизменяема: после создания поведение не изменится.

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

Когда использовать заглушки?

Заглушки являются альтернативой заглушкам и шпионам и могут полностью заменить все такие случаи применения.

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

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

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

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

Создание заглушки

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

Создание заглушки без поведения

Создание заглушки с пользовательским поведением

Заглушки с поведением

Заглушки нельзя изменить после создания с поведением.

sinon.fake.returns(value);

Создаёт заглушку, которая возвращает value аргумент.

sinon.fake.throws(value);

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

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

sinon.fake.resolves(value);

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

sinon.fake.rejects(value);

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

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

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

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

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

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

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

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

sinon.fake(func);

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

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

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

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

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

f.callback

Это свойство является удобным способом получения ссылки на последний переданный 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/v11/fakes

Spec-Zone.ru

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