मैं create-app-component का उपयोग करके एक प्रोजेक्ट बनाता हूं, जो बिल्ड स्क्रिप्ट्स (बेबेल, वेबपैक, जेस्ट) के साथ एक नया ऐप कॉन्फ़िगर करता है।जेस्ट के साथ मॉड्यूल का नकल नहीं कर सकता है, और टेस्ट फ़ंक्शन कॉल
मैंने एक प्रतिक्रिया घटक लिखा है जिसे मैं परीक्षण करने की कोशिश कर रहा हूं। घटक को एक और जावास्क्रिप्ट फ़ाइल की आवश्यकता होती है, जिसमें फ़ंक्शन का खुलासा होता है।
मेरे search.js फ़ाइल
export {
search,
}
function search(){
// does things
return Promise.resolve('foo')
}
मेरे प्रतिक्रिया घटक:
import React from 'react'
import { search } from './search.js'
import SearchResults from './SearchResults'
export default SearchContainer {
constructor(){
this.state = {
query: "hello world"
}
}
componentDidMount(){
search(this.state.query)
.then(result => { this.setState({ result, })})
}
render() {
return <SearchResults
result={this.state.result}
/>
}
}
मेरी इकाई परीक्षण में, मैं यह देखना होगा कि विधि search
सही तर्क के साथ बुलाया गया था चाहते हैं।
मेरे परीक्षण है कि कुछ इस तरह दिखाई:
import React from 'react';
import { shallow } from 'enzyme';
import should from 'should/as-function';
import SearchResults from './SearchResults';
let mockPromise;
jest.mock('./search.js',() => {
return { search: jest.fn(() => mockPromise)};
});
import SearchContainer from './SearchContainer';
describe('<SearchContainer />',() => {
it('should call the search module',() => {
const result = { foo: 'bar' }
mockPromise = Promise.resolve(result);
const wrapper = shallow(<SearchContainer />);
wrapper.instance().componentDidMount();
mockPromise.then(() => {
const searchResults = wrapper.find(SearchResults).first();
should(searchResults.prop('result')).equal(result);
})
})
});
मैं पहले से ही एक कठिन समय jest.mock
काम करने के लिए कैसे, क्योंकि यह चर mock
से उपसर्ग होना करने की आवश्यकता है यह पता लगाने के लिए था।
लेकिन अगर मैं search
विधि के लिए तर्कों का परीक्षण करना चाहता हूं, तो मुझे अपने परीक्षणों में मॉक किए गए फ़ंक्शन को उपलब्ध कराने की आवश्यकता है।
अगर मैं मजाक भाग को बदलने, एक चर का उपयोग करें:
TypeError: (0 , _search.search) is not a function
जो कुछ भी मैं कोशिश jest.fn
की पहुंच है और तर्क का परीक्षण, मैं करने के लिए:
const mockSearch = jest.fn(() => mockPromise)
jest.mock('./search.js',() => {
return { search: mockSearch};
});
मैं इस त्रुटि मिलती है इसे काम नहीं कर सकता
मैं क्या गलत कर रहा हूं?
इस बहुत विस्तृत प्रतिक्रिया के लिए धन्यवाद। मैं निश्चित रूप से आपके समाधान का प्रयास करूंगा। – ghusse
जबकि पिछले समाधान तकनीकी रूप से काम करना चाहिए (और मुझे अंत में यह भी पता चला कि क्यों 'var' आवश्यक था), अब मैंने जवाब को बहुत कम बदसूरत, आईएमओ का उपयोग करने के लिए संपादित किया है। आपकी मदद के लिए – Tomty
धन्यवाद। दूसरे समाधान के साथ, मुझे एक त्रुटि मिलती है 'खोज की संपत्ति खोज सेट नहीं कर सकती'। पहला समाधान काम करता है: मुझे lib को आयात करने और सभी के लिए एक बार जस्ट कॉल करने की आवश्यकता है (पहले ट्रिगर में नहीं)। – ghusse