Вот метод и тест, который я написал для него.Вы можете видеть, что в комментариях я пытаюсь объяснить свой мыслительный процесс относительно того, что происходит, когда срабатывает метод handleSetRef()
.В верхней части страницы модульного теста я смоделировал iframe, так как согласно handleSetRef
, element.scrollIntoView()
будет вызываться, только если рассматриваемый элемент является iframe.Я не уверен, является ли это правильным подходом вообще, потому что я очень плохо знаком с программированием в целом.
handleSetRef = (element) => {
if (element && isIframe) {
element.scrollIntoView();
}
};
// this code lives at the top of my Component.test.js file
const MockContent = () => <iframe title="title" />;
it('should scroll a given element into view when handleSetRef fires', () => {
const scrollIntoViewMock = jest.fn();
// trying to access the scrollIntoView method on the Element base class
window.Element.prototype.scrollIntoView = scrollIntoViewMock;
// setting default props for the component to test
const mounted = true;
const title = 'title';
const props = { mounted, title };
const wrapper = createWrapper(Component, props);
// execute the method with the element as the param
wrapper.handleSetRef(<MockContent />);
expect(scrollIntoViewMock).toHaveBeenCalled();
});
Ожидаемый результат: scrollIntoView()
вызывается для элемента.Полученный результат: ожидалось, что scrollIntoViewMock
был вызван, но это не так.Все еще в недоумении, как решить эту головоломку.Любая помощь будет высоко ценится.