2014-12-25 15 views
5

Sto provando a testare lo scenario di composizione del generatore. Nel mio generatore che io chiamo un sub-generatore se un certo pronta ritorna veroTest della composizione di yeoman con

if(this.bar){ 
    this.composeWith('foo:bar', {}); 
} 

Io, ovviamente, prova il sub-generatore bar separatamente. Comunque mi piacerebbe avere un asser per questo composeWith() per essere stato chiamato. E immagino che il problema sia piuttosto nelle mie capacità rispetto ai documenti di test degli yeoman, ma non ho idea di come farlo. Capisco che ho bisogno di una spia e di uno stub. Ma i documenti elencano solo le funzioni ei test per lo stesso generatore di yeoman sono solo mentali (ho provato a riprodurre i loro passi, ma per lo più usano i manichini per tutto e ho solo bisogno di spegnere il sub-generatore).

Qualsiasi aiuto sarebbe molto apprezzato. Grazie.

risposta

5

Ammetto che la documentazione è carente su questo punto e potremmo migliorarla.

Ecco un semplice esempio di come è possibile utilizzare una spia per testare il vostro sub-generatore è chiamato:

var generators = require('yeoman-generator').generators; 
var assert = require('yeoman-generator').assert; 

before(function (done) { 
    this.spy = sinon.spy(); 
    var Dummy = generators.Base.extend({ 
     exec: this.spy 
    }); 

    helpers.run('your/generator') 
     .withGenerators([ 
      [Dummy, 'foo:bar'] 
     ]) 
     .on('end', done); 
}); 

// Then in your assertions 
it('run the sub-generator', function() { 
    assert(this.spy.calledOnce); 
}); 
+1

ho dovuto anche a 'require ('moka-Sinon')' e 'cambiare sinon.spy 'a' this.sinon.spy' per farlo funzionare. Ci sono molti modi per ottenere 'sinon' nell'oscilloscopio, quindi OP potrebbe avere un setup diverso. – maxwellb