Sinon: Заглушки должны иметь «решает» и «отклоняет» для настройки результатов обещания.

Созданный на 8 авг. 2015  ·  13Комментарии  ·  Источник: sinonjs/sinon

Это очень простой синтаксический сахар:

var stub = sinon.stub();
stub.resolves("hello");
//is the same as
stub.returns(Promise.resolve("hello"));

stub.rejects(new Error("oh noes!"));
//is the same as
stub.returns(Promise.reject(new Error("oh noes!"));
Medium Feature Request Help wanted

Самый полезный комментарий

Могу ли я сделать sinon.stub().returnsArg(1) когда заглушка возвращает обещание? Я пытаюсь просто вернуть аргумент как решение моего обещания. Похоже, не работает.

Все 13 Комментарий

Было бы неплохо, спасибо за предложение @mariusGundersen

У нашей команды есть небольшая библиотека на npm, которая помогает нам с подобными вещами - https://github.com/substantial/sinon-stub-promise - хотя то, как это реализовано в настоящее время, требует синтаксиса заглушки, например: sinon.stub().returnsPromise() . Мысли? Из приведенного выше примера похоже, что это предполагает синхронную оценку, не так ли?

Мне очень нравится предложение @mariusGundersen . Насколько я знаю, все библиотеки обещаний всегда асинхронны, верно? Если это так, я думаю, что обещание-заглушка должно отражать это поведение.

Я просто подумал, что он будет использовать глобально доступный Promise.resolve , если он существует, а если нет, это не сработает. Но позволить ему вернуть объект с помощью метода then - гораздо лучшее решение:

var stub = sinon.stub(); 
stub.resolves("hello"); 
//is the same as 
stub.returns({then: x => setTimeout(()  => x("hello"), 0)}); 
stub.rejects(new Error("oh noes!")); 
//is the same as 
stub.returns({then: x => undefined, catch: x => setTimeout(() => x(new Error("oh noes!")), 0)});

(написано на телефоне, могут быть ошибки)

Наша команда написала небольшую библиотеку для обеспечения аналогичной функциональности. Может это поможет. Для обещаний он использует библиотеку bluebird. https://www.npmjs.com/package/sinon-bluebird

+1 за встроенную поддержку Promise

Также есть проект под названием sinon-as-обещанный, который исправляет существующий модуль sinon вашего проекта с использованием native- prom

Было бы здорово, если бы этот или изменения из одного из других модулей могли быть добавлены в сам sinon.

Могу ли я сделать sinon.stub().returnsArg(1) когда заглушка возвращает обещание? Я пытаюсь просто вернуть аргумент как решение моего обещания. Похоже, не работает.

Вопросы об использовании

stub = (arg) => Promise.resolve(arg);

То же отсюда: # 738

Всем привет, прежде всего, спасибо за отличную работу, которую вы, ребята, проделали над Sinon.
Если вы хотите, чтобы это было реализовано, я также хотел бы попробовать, просто дайте мне знать, и я начну работать в PR для этого.

@lucasfcosta , спасибо за это. Я думаю, @mroderick давно говорил об интеграции sinon-as-promised в Sinon, не так ли? Это было бы самым простым решением, и у меня нет возражений.

@lucasfcosta Я бы хотел увидеть PR для интеграции sinon-as-promised в ветку master Синон

Была ли эта страница полезной?
0 / 5 - 0 рейтинги