الوحدات التي أريد اختبارها و / أو محاكاة استخدام بعض المتغيرات العالمية.
على سبيل المثال ، تقوم الكود المصدري للوحدة النمطية بإشارة إلى متغير session
، والذي لم يتم تعريفه في أي مكان ولكنه متاح في وقت التشغيل.
ضع في اعتبارك الوحدة globals.js
:
let globals = {
contextName: "DATA_PIPELINE",
reportContext: "report",
session: session
};
module.exports = globals;
لم يتم تعريف session
في هذا الملف ولكنه متاح في وقت التشغيل. إنه متغير عالمي للبيئة (ليس تحت سيطرتي).
لقد لاحظت أنه باستخدام أجهزة ضبط الوقت المزيفة ، تمكنت من استبدال تنفيذ الوظائف العالمية مثل setTimeout. كيف يمكننا تطبيق هذا على أي وظيفة / كائن عالمي؟
ربما sinon.replace(object, prop, replacement)
هو ما تبحث عنه؟
https://sinonjs.org/releases/v7.2.4/sandbox/#sandboxreplaceobject -property-replace
نحاول الحفاظ على مرتبة قائمة مشكلات GitHub والتركيز على الأخطاء ومناقشات الميزات. تبدو هذه التذكرة وكأنها سؤال استخدام ؛ يرجى نشره على StackOverflow ووضع علامة عليه بـ sinon
، حتى يتمكن المجتمع الأكبر من المساعدة في الإجابة على أسئلتك.
في Node.js ، يمكنك فعل شيء مثل:
global.session = sinon.stub();
// Proceed to import the modules that use the session global and run the tests