Вы можете передавать обещания своей функции без необходимости заглушать что-либо для большей части того, что вы описываете.
У меня есть случай, когда я заглушаю Promise.all ()ошибка
Вместо заглушки Promise.all
, просто передайте массив с отклоненным Promise
вашей функции:
someFunc([Promise.reject(new Error('fail'))], null)
..., что приведет к Promise.all
перейти в catch
и отклонить с ошибкой.
Я заглушаю Promise.all (), чтобы вернуть ложное положительное значение, и заглушку ourHelperLib.toArray (), чтобы выдать ошибку и проверитьесли функция обрабатывает это или нет
Опять же, вместо заглушки Promise.all
, просто передайте массив с разрешенным Promise
:
someFunc([Promise.resolve('a value')], null)
Вы можете либо заглушку ourHelperLib.toArray
для выдачи ошибки или разрешения вашего массива Promise
на то, что, как вы знаете, вызовет ourHelperLib.toArray
.
Для третьего теста я заглушаю Promise.all (),ourHelperLib.toArray () и ourHelperLib.toObject () возвращают ложные срабатывания, а затем проверяют выходные данные на результатlved обещание со значением, которое является результатом операций.
Stubbing ourHelperLib.toArray
и ourHelperLib.toObject
необязательно.Если они не являются вычислительно дорогими (например, если они выполняют сетевые вызовы), то обычно имеет смысл называть их как обычно.
Вы можете передать данные, которые вы хотите дать ourHelperLib.toArray
, в массиве resolved Promise
s, и просто передайте значение, которое вы хотите отправить, ourHelperLib.toObject
в качестве второго аргумента:
someFunc([
Promise.resolve('value 1 for ourHelperLib.toArray'),
Promise.resolve('value 2 for ourHelperLib.toArray')
], 'value for ourHelperLib.toObject')
... и убедитесь, что результирующее Promise
разрешается в ожидаемое значение.
Как правило, рекомендуется придерживаться теста черного ящика.
Эта функция, по-видимому, не имеет побочных эффектов и просто возвращает Promise
, который разрешается в результате.на основе переданных параметров.
Если функция не имеет вычислительно дорогих зависимостей, то, по возможности, лучше всего протестировать такую функцию, просто передав параметры и проверив результат.