Sinon: طريقة Stubbing في نفس الملف لا تعمل

تم إنشاؤها على ٥ أكتوبر ٢٠١٦  ·  3تعليقات  ·  مصدر: sinonjs/sinon

أحاول اختبار وحدة في ملف أثناء إيقاف وظيفة أخرى في ملف SAME ، ولكن لا يتم تطبيق mock ويتم استدعاء الطريقة الحقيقية. هذا مثال:

// file: 'foo.js'

export function a() {
   // .....
}

export function b() { 
   let stuff = a(); // call a
   // ...do stuff
}

واختباري:

import * as actions from 'foo';

const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()

ال 3 كومينتر

فكر كيف سيبدو هذا في المعيار ES5. يتم تصدير كل دالة باسم معين في كائن الصادرات ، ولكنها أيضًا قابلة للإشارة داخليًا باستخدام اسم الوظيفة. نحن نتحدث عن مرجعين مختلفين. عند stubbing أنت تقوم بتغيير المرجع الخارجي. يتم الاحتفاظ بالمرجع الداخلي كما هو. لا يمكنك تغييره ، إلا إذا قمت بإنشاء حاقن تبعية صريح (مثل وظيفة الضبط للاستخدام الداخلي). هذا ليس خطأ ، ولكنه سمة من سمات JavaScript.

هل هناك أي حل بديل حول هذا ؟؟؟ من الشائع جدًا الدخول في هذا النوع من المشكلات عند اختبار ملف nodejs.

هذا مغطى في وثائقنا ، في قسم الكيفية:
http://sinonjs.org/how-to/link-seams-commonjs/

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