Я написал простой Реагировать компонент, который визуализирует :Испытание содержание в <iframe> в React компонента с Enzyme
export class Iframe extends React.component {
render() {
return <iframe src={ this.props.src } />;
}
}
, и я стараюсь, чтобы проверить его, проверяя, что содержимое, загруженное с src
является правильно заполненной в пределах . Для этого я пытаюсь получить доступ к frame.contentWindow
, но после установки его с ферментом он всегда возвращает undefined
.
Я пытался дразнить содержание с Синоне FakeXMLHttpRequest
:
server = sinon.fakeServer.create();
server.respondWith('GET', 'test', [200, { 'Content-Type': 'text/html' }, '<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><body><div class="myClass">Amazing Unicorn</div></body></html>']);
container = mount(<Iframe src='test' />);
и с <iframe src='data:text/html' >
:
const src = 'data:text/html;charset=utf-8,<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><body><div class="myClass">Amazing Unicorn</div></body></html>';
container = mount(<Iframe src={ src } />);
, но в обоих случаях на тест с Энзим:
container = mount(<Iframe src='...' />);
container.instance().contentWindow // equals 'undefined'
container.find('iframe').contentWindow // equals 'undefined'
Компонент работает и отображает, как ожидалось, на лбу ser при наличии действительного атрибута src
. Есть ли способ получить доступ к contentWindow
в тестах на реактивность с помощью фермента (или любой другой тестовой среды)?
У меня такая же проблема, чтобы проверить его, нашли ли вы решение? –
Вам нужно будет настроить фермент с помощью «рабочего» браузера. Не знаю, возможно ли это. Однако почему вы должны протестировать это? ИМХО этот тест бессмыслен, так как вы не будете тестировать свой код, но реагируете. Я думаю, вам нужно просто проверить, правильно ли передается «src» в качестве атрибута «src» iframe, который возможен с помощью фермента. – lipp
contentWindow будет на самом деле null не undefined, после того, как вы получитеDOMNode() и проверьте свойство contentWindow. то, что вы проверили, это свойство contentWindow на ферментной обертке, а не iframe – maciejW