2015-09-07 13 views
5

मैं एक जेएस का परीक्षण करना चाहता हूं जो डेटा लाने के लिए एक तीसरे lib का उपयोग कर रहा है, इसलिए मैं कार्यान्वयन के लिए जेस्ट मॉक का उपयोग कर रहा हूं। यह काम कर रहा है जब मैं इसे सीधे परीक्षण में बुलाता हूं। हालांकि, यह स्रोत कोड में उपयोग होने पर काम नहीं कर रहा है।जेस्ट मॉक कार्यान्वयन की आवश्यकता नहीं है ('')

यहाँ कोड

//Source implementation 

var reference = require('./reference'); 

module.exports = { 
    getResult: function() { 
    return reference.result(); 
    } 
}; 


//Test code 

jest.dontMock('./foo'); 
jest.dontMock('console'); 

describe('descirbe', function() { 
    var foo = require('./foo'); 

    it('should ', function() { 
    var reference = require('./reference'); 

    reference.result.mockImplementation(function (a, b, c) { 
     return '123' 
    }); 

    console.log(foo.getResult()); // undefined 
    console.log(reference.result()); // 123 
    }); 

}); 

उत्तर

2

की आवश्यकता है की आपका आदेश गलत हो रहा है। जब आपको अपने मॉक reference को सेट करने से पहले ./foo की आवश्यकता होती है तो foo s reference जेस्ट ऑटोमॉकिंग के अनुसार अपरिभाषित किया जाएगा।

jest.dontMock('./foo');                                                     

describe('descirbe', function() {                                                   
    it('should ', function() {                                                    
     var reference = require('./reference');                                                
     reference.result.mockImplementation(function (a, b, c) { 
      return '123'; 
     });                                                
     var foo = require('./foo');                                                   

     console.log('ferr', foo.getResult()); // ferr 123                                                 
    });                                                          
}); 
2

लाइन

var foo = require('./foo');

describe में मूल्यांकन और foo में संग्रहीत हो जाता है।

बाद में, it ब्लॉक में, आप इसे मजाक कर रहे हैं, लेकिन यह पुराने संदर्भ foo पर लागू नहीं है।

foomockImplementation कॉल के बाद त्रुटि को ठीक करेगा।

//Test code 

jest.dontMock('./foo'); 
jest.dontMock('console'); 


describe('describe', function() { 

    it('should ', function() { 
    var reference = require('./reference'); 

    reference.result.mockImplementation(function (a, b, c) { 
     return '123' 
    }); 
    var foo = require('./foo'); 

    console.log(foo.getResult()); // undefined 
    console.log(reference.result()); // 123 
    }); 

}); 
संबंधित मुद्दे