Jest: وظيفة التجسس

تم إنشاؤها على ٢٠ سبتمبر ٢٠١٦  ·  3تعليقات  ·  مصدر: facebook/jest

أحاول معرفة أفضل طريقة للتعامل مع حالة الاستخدام بدافع الدعابة.

لا أريد أن أسخر من الوظيفة ، فقط تجسس عليها واترك التنفيذ الأصلي يقوم بالعمل. لنفترض أنني أريد تتبع عدد مرات استدعاء الاستعلام على برنامج تشغيل postgres. النهج التالي يعمل:

const querySpy = pg.Client.prototype.query = jest.fn(pg.Client.prototype.query);
expect(querySpy.mock.calls.length).toBe(2)

المشكلة هي أنني يجب أيضًا تعيين التنفيذ الأصلي في نهاية الاختبار حتى لا يؤثر على الآخرين في نفس الملف. لذلك من السهل كسر عزل الاختبار إذا نسي شخص ما هذا التنظيف.

لقد لاحظت أيضًا أن الياسمين لديها spyOn والذي يبدو أنه يعمل بشكل مضحك أيضًا (ولكن غير موثق) ، وهو أنيق جدًا ، لذلك يمكن تحقيق نفس الشيء من خلال:

const querySpy = spyOn(pg.Client.prototype, 'query').and.callThrough();
expect(querySpy.calls.count()).toEqual(3);

وياسمين تدعي إزالة الجاسوس بعد الاختبار بشكل آلي ، وهو أمر رائع.

لكن لست متأكدًا مما إذا كان هذا شيئًا سيصبح جزءًا رسميًا من الدعابة؟ المشكلة هي أن جواسيس الياسمين لديهم واجهة مختلفة عن السخرية في الدعابة. لذلك أعتقد أن الأفضل هو توسيع وظائف الوهمية بحيث يمكن استخدامها بسهولة للتجسس باستخدام spyOn أو شيء مشابه.

نرحب بأي ملاحظات.

التعليق الأكثر فائدة

ربما غير صحيح في هذا الأمر ، لكن أليس expect.spyOn مختلفًا عن الياسمين spyOn لأنه لا يقوم بعملية "الاستعادة التلقائية" المزعومة في نهاية الاختبار؟ أعتقد أن هذه الميزة أنيقة جدًا وتزيل ملفات المواصفات. هل ستكون هناك أي خطط لإضافة هذا النوع وظيفيًا عند دمج # 1679؟

ال 3 كومينتر

يتم تتبع هذا كجزء من # 1679.

ربما غير صحيح في هذا الأمر ، لكن أليس expect.spyOn مختلفًا عن الياسمين spyOn لأنه لا يقوم بعملية "الاستعادة التلقائية" المزعومة في نهاية الاختبار؟ أعتقد أن هذه الميزة أنيقة جدًا وتزيل ملفات المواصفات. هل ستكون هناك أي خطط لإضافة هذا النوع وظيفيًا عند دمج # 1679؟

راجع أيضًا # 2534.

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