【问题标题】:howto unit test a yeoman generator如何对 Yeoman 生成器进行单元测试
【发布时间】:2017-09-11 06:34:53
【问题描述】:

我查看了http://yeoman.io/authoring/testing.html 的官方指南 但这让我有点困惑。 helpers.run 返回一个运行上下文,我可以在其上调用方法等。 但我很困惑如何测试文件是否存在(使用 assert.file ) 我的印象是helpers.run 将在内存或文件系统中创建文件。但是assert.file 总是失败。 对于运行测试之前文件系统上存在的文件,它不会失败。

当我运行我的生成器(yo my-generator)时,我看到文件已创建。

如何测试文件是否已创建? 到目前为止,这是我的代码,但它不起作用。

我正在使用 jasmine 进行测试。

let helpers = require('yeoman-test');
let assert = require('yeoman-assert');

describe('generator:test', function () {

    let path = require('path');

    beforeEach(function () {
        console.log(path.join(__dirname, '../generators/app'));
        // The object returned acts like a promise, so return it to wait until the process is done
        helpers.run(path.join(__dirname, '../generators/app'))
            .withPrompts({
                name: 'test',
                appName: 'test',
                appTitle: 'test',
                apiEndpoint: 'http://localhost'
            });
    })

    it('all config files', function () {

        assert.file(#arrayOfFiles#);
    });
});

【问题讨论】:

    标签: unit-testing yeoman


    【解决方案1】:

    我知道这是一个老问题,但由于它在 Google 的测试 Yeoman 生成器的搜索结果中排名很高,因此尝试回答它似乎很有用:

    你的 beforeAll 需要返回 helpers.run 返回的 Promise。否则,测试运行器在运行实际测试之前不会等待足够长的时间,并且文件将不存在。所以你的例子应该是这样的:

    let helpers = require('yeoman-test');
    let assert = require('yeoman-assert');
    
    describe('generator:test', function () {
    
        let path = require('path');
    
        beforeEach(function () {
            return helpers.run(path.join(__dirname, '../generators/app'))
                .withPrompts({
                    name: 'test',
                    appName: 'test',
                    appTitle: 'test',
                    apiEndpoint: 'http://localhost'
                });
        })
    
        it('all config files', function () {
            assert.file(#arrayOfFiles#);
        });
    });
    

    【讨论】:

    • 对不起,不接受你的回答,但我很久以前就放弃了这个项目,无法测试你的代码是否有效。如果有人可以确认,我很乐意接受您的回答
    猜你喜欢
    • 2011-02-21
    • 1970-01-01
    • 2013-11-26
    • 2010-09-05
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2021-01-16
    相关资源
    最近更新 更多