هذا سكر نحوي بسيط للغاية:
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!"));
سيكون هذا بعض السكر اللطيف ، شكرًا لك على الاقتراح 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
التعليق الأكثر فائدة
هل يمكنني عمل
sinon.stub().returnsArg(1)
حيث يُرجع كعب الروتين وعدًا؟ أحاول فقط أن أعيد الجدال على أنه حل لوعدي. لا يبدو أنه يعمل.