أقوم بإجراء اختبار باستخدام مكتبة ( grommet
) تستخدم scrollIntoView
على علامة a
. jsdom
حدوث أخطاء عند الضغط على هذا السطر من التعليمات البرمجية. تمكنت من تشغيله عن طريق إضافة window.HTMLElement.prototype.scrollIntoView = function() {};
في ملف testHelper الخاص بي لإعداد الاختبارات ، لكنني اعتقدت أنني سأبلغ عنه لمعرفة ما إذا كان شيئًا تريد إصلاحه.
نعم ، قد يكون هذا مفيدًا لإضافة كعب تحذير لم يتم تنفيذه لـ. لا يمكننا تنفيذها حقًا لأننا لا نقوم بالتخطيط.
أي حركة على هذا؟
في محاولة لاستخدامه في اختبار Jest ، أحاول تثبيت مكون يستدعي scrollIntoView على عنصر ، ويفشل الاختبار دائمًا مع
TypeError: node.scrollIntoView is not a function
at Object.scrollInToView src/component/shared/foo.tsx:7
at User.Object.<anonymous>.User.componentDidMount
QuantumInformation يمكنك استخدام هذا من أجل الدعابة:
Element.prototype.scrollIntoView = jest.fn();
أرى هذا الإصلاح في كل مكان ، ولكن هل كنت تستورد العنصر من؟ أحصل على "لم يتم تعريف العنصر" أنا أستخدم إنزيمًا مع شاي.
أنت بحاجة إلى عنصر في tsconfig libs الخاص بك:
بمعنى آخر
"دوم"
@ qmg-JamesT إنها فئة العناصر العامة حيث يتم توارث العناصر الأخرى بطريقة scrollIntoView .
مرحبًا ، هل هناك أي تحديث على هذا دون استخدام المزاح؟
مرحبًا ، يمكنك استخدام window.HTMLElement.prototype.scrollIntoView = jest.fn ()
أحتاج إلى نفس الشيء لـ Element.prototype.scroll = jest.fn ()
enessoylu و msmetana أين تنصح بوضع Element.prototype.scrollIntoView = jest.fn()
في كل اختبار.
عند استخدام CRA ، هناك setupTest.ts ، يبدو أنه يعمل ولكن لا أعرف
import '@testing-library/jest-dom/extend-expect'
Element.prototype.scroll = jest.fn()
بالنسبة إلى ava
أو أي عداء اختبار وحدة أخرى ، يمكنك استخدام window.HTMLElement.prototype.scrollIntoView = () => {}
وتعيينه على test.beforeEach()
أو داخل وظيفة الاختبار
بالنسبة لي كان كافيًا أن أضع:
Element.prototype.scrollIntoView` = () => {};
مرة واحدة في setupJest.ts
يبدو أن هذا هو الحال أيضًا مع scroll
Element.prototype.scrollIntoView = jest.fn();
شكرا! انها عملت.
جرب هذه..
window.HTMLElement.prototype.scrollIntoView = function () {} ؛
التعليق الأكثر فائدة
QuantumInformation يمكنك استخدام هذا من أجل الدعابة:
Element.prototype.scrollIntoView = jest.fn();