Как заглушить обещанный зависимый модуль, который экспортирует функцию
Вы пытаетесь использовать sinon
для заглушки зависимого модуля, но обнаружили, что они неудобно экспортировали функцию, а не объект?
Кроме того, вы оборачиваете этот зависимый модуль через bluebird
promisify?
Если это так, я собираюсь избавить вас от головной боли в Интернете и показать вам, как это сделать здесь.
Допустим, у вас есть следующий зависимый модуль user-data
:
И давайте сделаем это более интересным, вы используете это в каком-то промежуточном программном обеспечении под названием accounts.js
:
Чтобы проверить это с помощью sinon
, вы хотите заглушить fetchUsers
, однако sinon
заглушка работает с объектами, fetchUsers
оказывается экспортируемой функцией, а не объектом.
Обходной путь — использовать proxyquire
, чтобы мы могли «заглушить» экспортированную функцию. Написание этого теста будет выглядеть так: