के साथ विंडो मॉकिंग मैं ऊपर सूचीबद्ध चार पुस्तकालयों के साथ उपयोग कर रहे घटक के लिए विंडो ऑब्जेक्ट को मॉक करने का प्रयास कर रहा हूं।सिनन, मोचा, एंजाइम, और प्रतिक्रिया
मुझे पता है कि यह JSDom के साथ किया जा सकता है लेकिन क्लाइंट इसका उपयोग करने के खिलाफ है। मेरे शोध के आधार पर केवल sinon.stub (विंडो, 'स्थान') काम करना चाहिए, लेकिन जब मैं अपने परीक्षण चलाता हूं तब भी मुझे अपने घटक में विंडो को अपरिभाषित किया जाता है।
वर्तमान में घटक वापसी प्रस्तुत करना {window.location.host} मैं गलत क्या कर रहा हूँ करने के लिए
कोई विचार के भीतर कहा जाता है एक टुकड़ा है कि बाहर ठूंठ सिनोन मिलता है। एक बार जब मैं उस टुकड़े को दबा देता हूं तो मैं उस घटक के अन्य हिस्सों का परीक्षण करने पर ध्यान केंद्रित कर सकता हूं जिसमें खिड़की से कुछ लेना देना नहीं है।
मेरे टेस्ट विधि:
import React from 'react';
import { shallow } from 'enzyme';
import chai from 'chai';
chai.should();
import sinon from 'sinon';
import BillingStatementRow from '../BillingStatementRow';
describe('Test <BillingStatementRow /> Component', function() {
context('Function Testing', function() {
it('Test - onFieldChange - Make sure it handles NaN', function() {
var e = {target: {value: NaN}};
var window = { location : { host : "..." } };
var mockedOnChange = sinon.spy();
const wrapper = shallow (
<BillingStatementRow slds={''} key={'1'}
Id={'1'} inputValue={'0'} salesInvoice={'SIN0001'}
invoicedAmount={1000} duedate={'1461628800000'}
outstandingBalance={1000} receiptRemaining={1000}
amountAllocated={1000} onChange={mockedOnChange.bind(this,'BS0001')} />
);
wrapper.instance().onFieldChange('amountAllocated', e);
wrapper.update();
})
});
});
मुझे लगता है कि आप घोषणा की है 'window' पहले (एक खाली वस्तु या कुछ और के रूप में)? साथ ही, क्या यह हर जगह उपलब्ध है (यानी यह एक वैश्विक है)? ** संपादित करें **: हम्म कभी भी ध्यान न दें, 'window.location' वैसे भी एक फ़ंक्शन नहीं है, और सिनन केवल फ़ंक्शन को रोक सकता है। फिर भी, आप वास्तव में क्या परीक्षण करना चाहते हैं? क्यों न सिर्फ वैश्विक 'विंडो = {स्थान: {होस्ट: "..."}} 'घोषित करें? – robertklep
हाँ विंडो को पहले घोषित किया गया है फिर भी यह मुझे अभी भी विंडो को परिभाषित नहीं करता है। – DimlyAware
'global.window = {location: ...} 'को इसके बजाय आज़माएं। – robertklep