0

我是新手。我正在使用yeoman webapp 生成器的一个版本(当我做对时我想分叉)。它似乎可以为网站提供服务并正确运行 mocha 测试,但在 livereload 时遇到问题。

我想做的是让它在浏览器中运行 mocha 测试,这样我就可以使用控制台调试和/或更丰富的输出格式。我在 grunt 中设置了一个 test:browser 任务:

grunt.registerTask('test', function( target ) { 
    var tasks;
    if ( target === 'browser' ) {
        tasks = [
            'clean:server',
            'concurrent:test',
            'autoprefixer',
            'connect:livereload_test',
            'watch' ];
    } else {
        tasks = [
            'clean:server',
            'concurrent:test',
            'autoprefixer',
            'connect:test',
            'mocha' 
        ];
    }
    grunt.task.run( tasks );
});

添加了“connect:livereload_test”并修改了“watch:livereload”:

        livereload_test: {
            options: {
                open: 'test/index.html',
                base: [
                    '.tmp',
                    '.',
                    '<%= yeoman.app %>'
                ]
            }
        },

和:

        livereload: {
            options: {
                livereload: '<%= connect.options.livereload %>'
            },
            files: [
                '{<%= yeoman.app %>,test}/*.html',
                '.tmp/styles/{,*/}*.css',
                '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
                'test/*.js',
                'test/spec/{,*/}*.js',
                '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
                'test/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
            ]
        }

分别。似乎成功地提供了 test/index.html 。但是,当我修改 test/spec/test.js 以更改测试描述(例如)时,它会注意到更改,但测试结果并未反映更改。我假设我错过了一些咕噜咕噜的代码,但它可能是什么?

4

1 回答 1

1

我们已经在generator-backbone中使用 livereload 实现了 mocha 测试在浏览器中运行。

livereload 片段由connect-livereload生成。

var LIVERELOAD_PORT = 35729;
var SERVER_PORT = 9000;
var lrSnippet = require('connect-livereload')({port: LIVERELOAD_PORT});

但是 require('connect-livereload') 单独不会插入到 index.html 中,您需要在connect:test中指定它

    livereload: {
        options: {
            middleware: function (connect) {
                return [
                    lrSnippet,
                    mountFolder(connect, '.tmp'),
                    mountFolder(connect, yeomanConfig.app)
                ];
            }
        }
    },
    test: {
        options: {
            port: 9001,
            middleware: function (connect) {
                return [
                    lrSnippet,
                    mountFolder(connect, '.tmp'),
                    mountFolder(connect, 'test'),
                    mountFolder(connect, yeomanConfig.app)
                ];
            }
        }
    },

检查中间件lrSnippet_

然后我们需要在 generator-backbone 中指定任务grunt test:server。(来源

if (target === 'test') {
    return grunt.task.run([
        'clean:server',
        'coffee',
        'createDefaultTemplate',
        'jst',
        'compass:server',
        'connect:test',
        'watch:livereload'
    ]);
}

您可以在yeoman/generator-backbone/issues上找到我们的讨论。如果你想看看,我最初的解决方法是gist 。

希望对您有所帮助。

于 2013-11-16T06:45:10.103 回答