Spec-Zone.ru › Sinon.JS 12

Мошенничество

Введение

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 свойства.

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

sinon.fake.resolves(value);

Создает мошенничество, которое возвращает разрешенное Promise для переданного значения.

sinon.fake.rejects(value);

Создает мошенничество, которое возвращает отклоненное Promise для переданного значения.

Если в качестве аргумента 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/v12/fakes

Spec-Zone.ru

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