测试yeoman的composeWith

时间:2014-12-25 01:39:01

标签: unit-testing mocha yeoman yeoman-generator

我正在尝试测试生成器组合方案。在我的生成器中,如果某个提示返回true,则调用子生成器

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

我显然分别测试了棒子发电机。但是我希望有一个断言让这个composeWith()被调用。而且我认为问题在于我的技能,而不是自我测试文档,但我不知道如何做到这一点。我明白我需要一个间谍和一个存根。但是文档只列出了函数,而自动生成器本身的测试只是精神上的(我尝试重现它们的步骤,但它们主要使用虚拟对象来处理所有事情,我只需要将子生成器存根)。

任何帮助都会非常感激。谢谢。

1 个答案:

答案 0 :(得分:5)

我承认文档在这一点上缺乏,我们可以改进它。

以下是一个简单的示例,说明如何使用间谍来测试您的子生成器:

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);
});