2016-03-29 16 views
1

Bir işlevi test ediyorum. fonksiyonu şöyle NeredeTest işlevinde harici bir aramayı çağırma işlemi nasıl yapılır?

element.funcCall(); 

: Bu başarısız

function funcCall() { 
    external.a.b.c.doSomething(); 
} 

: Bu işlev benim test başarısız kılan harici bir modül için bir çağrı vardır tanımsız dış' değerlendiren bir nesne (tutulamaz. abcdoÖnceki ')

Bu konuya nasıl cevap verebilirim veya taklit ederim, bu yüzden çağrı gerçekten yapılmaz. Bu test için işlevselliğe ihtiyacım yok.

İşte
var element = require('element'), 
    external = require('external'), 
    sinon = require('sinon'), 
    expect = require('chai').expect; 

describe('element.funcCall()', function() { 

    before(function() { 
     this.doSomethingStub = sinon.stub(external.a.b.c, 'doSomething'); 
    }); 

    it('should do something external', function() { 
     element.funcCall(); 
     expect(this.doSomethingStub.called).to.be.true; 
    }); 

    after(function() { 
     this.doSomethingStub.restore(); 
    }); 

}); 

cevap

1

bu. yürütülmektedir O harici işlevi hakkında umursamadı, ben bu yüzden gibi sahte:

var func = function() {}; 
external = 
    { a: 
     { b: 
     { c: 
      {doSomething: func} 
      } 
     } 
    } 

... 
element.funcCall(); 
expect..... 

Bu iç işlev çağrısı boş işlevi tr yönlendirildi ve ben

+0

çalıştı yöntemin kalanını test edebilir ama aynı hatayı almaya devam etti. Bunu farklı bir şekilde çözdüm. – Alon

0

Bunu çözmeye sona nasıl: Ben bu tür şeyleri nasıl İşte

İlgili konular