【问题标题】:Testing yeoman's composeWith测试 yeoman 的 composeWith
【发布时间】:2014-12-25 01:39:00
【问题描述】:

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

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

我显然单独测试了 bar 子生成器。但是,我希望对此 composeWith() 进行断言。而且我想问题在于我的技能而不是 yeoman 测试文档,但我不知道如何做到这一点。我知道我需要一个间谍和一个存根。但是文档只是列出了函数,并且对 yeoman-generator 本身的测试只是心理上的(我尝试复制他们的步骤,但他们大多使用假人来做所有事情,我只需要删除子生成器)。

任何帮助将不胜感激。谢谢你。

【问题讨论】:

    标签: unit-testing mocha.js yeoman yeoman-generator


    【解决方案1】:

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

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

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

    【讨论】:

    • 我还必须 require('mocha-sinon') 并将 sinon.spy 更改为 this.sinon.spy 才能正常工作。有很多方法可以让sinon 在范围内,因此 OP 可能有不同的设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2013-12-30
    相关资源
    最近更新 更多