मैं एक साधारण प्रतिक्रिया घटक है कि renders लिखा है एक :टेस्ट एनजाइम के साथ एक घटक प्रतिक्रिया में एक <iframe> की सामग्री
export class Iframe extends React.component {
render() {
return <iframe src={ this.props.src } />;
}
}
और मैं यह जांच करना कि सामग्री के साथ src
है लोड से यह परीक्षण करने के लिए कोशिश कर रहा है के भीतर ठीक से आबादी। ऐसा करने के लिए मैं frame.contentWindow
तक पहुंचने का प्रयास करता हूं, लेकिन एंजाइम के साथ इसे घुमाने के बाद यह हमेशा undefined
देता है।
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' >
साथ:
मैं सिनोन FakeXMLHttpRequest
साथ सामग्री उपहास करने के लिए कोशिश की है
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'
घटक काम करता है और प्रतिपादन के रूप में प्रस्तुत करता है जब एक वैध src
विशेषता प्रदान की जाती है तो सेवा। एंजाइम (या किसी अन्य परीक्षण ढांचे) के साथ प्रतिक्रिया परीक्षण में contentWindow
तक पहुंचने का कोई तरीका है?
मुझे इसका परीक्षण करने के लिए एक ही समस्या है, क्या आपको कोई समाधान मिला? –
आपको "काम करने वाले" ब्राउज़र के साथ एंजाइम सेट करना होगा। पता नहीं है कि यह संभव है या नहीं। हालांकि, आप इसका परीक्षण क्यों करना चाहते हैं? IMHO यह परीक्षण व्यर्थ है क्योंकि आप अपने कोड का परीक्षण नहीं करेंगे लेकिन प्रतिक्रिया दें। मुझे लगता है कि आपको केवल परीक्षण करना चाहिए यदि प्रोप "src" सही ढंग से iframe के "src" विशेषता के रूप में सही हो गया है जो एंजाइम के साथ संभव है। – lipp
सामग्री Window वास्तव में शून्य नहीं होगी, जब आप DOMNode() प्राप्त करते हैं और संपत्ति सामग्री जांचते हैं Window। जो आपने चेक किया है वह संपत्ति सामग्री है एंजाइम रैपर पर विन्डो आईफ्रेम स्वयं नहीं – maciejW