2016-06-21 3 views
5

मुझे पता है कि एक फ़ंक्शन को प्रतिस्थापित करने के लिए स्टब का उपयोग कैसे करें।मैं सिनन में तरीकों की एक श्रृंखला कैसे लगा सकता हूं?

sandbox.stub(Cars, "findOne", 
      () => {return car1 }); 

लेकिन अब मैं अपने समारोह में एक पंक्ति मैं परीक्षण करने के लिए है कि मुझे लगता है कि इस

Cars.find().fetch() 

की तरह लग रहा ठूंठ की जरूरत चाहते हैं तो वहाँ समारोह की एक श्रृंखला यहाँ है और मैं अनिश्चित हूँ क्या मुझे करने की ज़रूरत है। मैं कुछ ऐसा करने के लिए "ढूंढ" कैसे लगा सकता हूं जिसका उपयोग मैं "लाने" के लिए उपयोग कर सकता हूं?

उत्तर

4

इस प्रयास करें:

sandbox.stub(Cars, "find",() => { 
    return { 
     fetch: sinon.stub().returns(anything); 
    }; 
}); 
+0

धन्यवाद कि पूरी तरह से काम किया! – Diskdrive

+1

गॉट 'ठूंठ (obj, 'मेथ', एफ एन) हटा दिया गया है, documentation' –

+0

देख इसे जोड़ने के लिए है कि सिनोन का सुझाव उपयोगी है: बजाय में callsFake (एफ एन) उपयोग sandbox.stub (obj, 'मेथ')। एक समारोह को रोकने के लिए आदेश। गैर-फ़ंक्शन मान को रोकने के लिए sandbox.stub (obj, 'meth') का उपयोग करें। मान (fn)। – keligijus

0

यह एक और इस तरीके को jQuery तरीकों की जंजीरों पर जासूसी की अनुमति देता है - जो मुझे काफी समय लगा यह पता लगाने की।

उदाहरण में, मैं परीक्षण करने के लिए है कि एक ई-मेल क्षेत्र बाहर

//set up stub and spy 
    const valSpy = sandbox.spy(); 
    const jQueryStub = sandbox 
     .stub($.prototype, "find")  // this prototype is important 
     .withArgs("input[name=email]") 
     .returns({ val: valSpy }); 

    // call function under test 
    learnerAlreadyAccepted(inviteDoc); 

    // check expectations 
    expect(jQueryStub).to.have.been.called;  // not really necessary 
    expect(valSpy).to.have.been.calledWith(""); 

को मंजूरी दे दी है और परीक्षण के अंतर्गत समारोह (मोटे तौर पर) है कोशिश कर रहा हूँ:

learnerAlreadyAccepted = function(doc) { 
    $("form").find("input[name=email]").val(""); 
    } 
संबंधित मुद्दे

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