Мошенничество
Введение
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