Sinon: يجب أن تحتوي الإخطارات على "حلول" و "مرفوضة" لتعيين نتائج الوعد

تم إنشاؤها على ٨ أغسطس ٢٠١٥  ·  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)});

(مكتوب على الهاتف ، قد يكون به أخطاء)

كتب فريقنا القليل من الليب لتقديم وظائف مماثلة. ربما هذا سوف يساعد. يستخدم مكتبة بلوبيرد للوعود. https://www.npmjs.com/package/sinon-bluebird

+1 لدعم Promise الأصلي

وهناك أيضا مشروع يسمى سينون كما هو وعدت الذي بقع حدة سينون القائمة مشروعك باستخدام -الوعد الأصلي فقط لإضافة يقرر / ترفض دلالات لبذرة.

سيكون الأمر رائعًا إذا كان من الممكن إضافة هذا أو التغييرات من إحدى الوحدات الأخرى إلى sinon نفسه.

هل يمكنني عمل sinon.stub().returnsArg(1) حيث يُرجع كعب الروتين وعدًا؟ أحاول فقط أن أعيد الجدال على أنه حل لوعدي. لا يبدو أنه يعمل.

تنتمي أسئلة استخدام jnystrom إلى القائمة البريدية ، لكن هذا ليس شيئًا يدعمه sinon حاليًا كسكر نحوي. ربما يمكنك اقتراح بناء جملة؟ شيء من هذا القبيل يجب أن يفعل ما تريد ، ولست بحاجة إلى sinon من أجله.

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

نفس من هنا: # 738

مرحباً بالجميع ، أولاً وقبل كل شيء ، شكرًا على العمل الممتاز الذي تقومون به يا رفاق على Sinon.
إذا كنت ترغب في تنفيذ هذا ، فأنا أحب أيضًا أن أجربه ، فقط أخبرني وسأبدأ العمل في العلاقات العامة لذلك.

lucasfcosta ، شكرًا على ذلك. أعتقد أن mroderick تحدث منذ فترة طويلة عن مجرد دمج sinon-as-promised في Sinon ، أليس كذلك؟ سيكون هذا هو الحل الأسهل ، وليس لدي أي اعتراض.

lucasfcosta أود أن أرى العلاقات العامة لدمج sinon-as-promised في فرع Sinon master

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات