2016-07-06 11 views
5
var MyClassStub = sinon.createStubInstance(MyClass); 

MyClassStub में स्थिर विधियां नहीं हैं। इसे कैसे ठीक करें?ईएस 6 में साइनऑन के साथ स्थैतिक तरीकों को कैसे रोकें?

+0

'MyClassStub .__ proto__ = MyClass' –

+0

https://stackoverflow.com/questions/21072016/stubbing-a-class-method-with-sinon-js –

उत्तर

2

स्थिर विधि:

sinon.stub(YourClass, 'yourClassMethod').callsFake(() => { 
    return {} 
}) 

नहीं स्थिर विधि:

sinon.stub(YourClass.prototype, 'yourClassMethod').callsFake(() => { 
    return {} 
}) 
3

सिनोन संस्करण 3.1.0 का उपयोग करते हुए मैं नीचे दिए गए (ठूंठ) निजी स्थिर चर कोड का उपयोग कर नकली करने में सक्षम हूँ:

const YourClass = require('./lib/YourClass'); 
const mockStaticMethod = sinon.stub(YourClass, '_yourStaticMethod').returns('I am called'); 

केवल एक चीज जो आपको याद रखना है कि sinon.stub() विधि में पहला पैरामीटर होना चाहिए कक्षा ही यह उस वर्ग का ऑब्जेक्ट नहीं होना चाहिए जैसे const yourClassObject = new YourClass();। कारण यह है कि कक्षा का कोई भी उद्देश्य आपको स्थिर तरीकों तक पहुंचने नहीं देगा।

संबंधित मुद्दे