2014-12-25 12 views
5

Próbuję przetestować scenariusz tworzenia komponentu generatora. W moim generatorze wywołuję generator podrzędny, jeśli pewna podpowiedź zwraca wartość true true, testując pod-generator prętów oddzielnie. Jednak chciałbym mieć pewność, że ta funkcja composeWith() została wywołana. I wydaje mi się, że problem tkwi raczej w moich umiejętnościach niż w testowaniu dokumentów, ale nie mam pojęcia, jak to zrobić. Rozumiem, że potrzebuję szpiega i karczma. Ale doktorzy po prostu wymieniają funkcje, a testy dla samopomocy-generatora są po prostu mentalne (próbowałem odtworzyć ich kroki, ale najczęściej używają manekinów na wszystko i muszę tylko podkręcić sub-generator).Testowanie kompilacji Yeomana z

Każda pomoc będzie naprawdę doceniana. Dziękuję Ci.

Odpowiedz

5

Przyznaję, że brakuje dokumentacji na ten temat i możemy ją poprawić.

Oto prosty przykład jak można użyć szpiega, aby sprawdzić swoją sub-generator nazywa się:

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

miałem też do 'require ('mocha-sinon')' 'sinon.spy i zmienić 'to' this.sinon.spy', aby działało. Istnieje wiele sposobów na uzyskanie 'sinon' w zakresie, więc OP może mieć inną konfigurację. – maxwellb