简体   繁体   English

如何使用grunt设置浏览器内测试?

[英]How can I setup in-browser tests using grunt?

I am a newbie to grunt. 我是个新手。 I am using the a version of yeoman webapp generator (which I would like to fork when I get this right). 我正在使用yeoman webapp生成器的版本 (当我理解正确时,我想对其进行分叉)。 It seems to serve website and run mocha tests correctly, but having trouble with livereload. 它似乎可以为网站提供服务并正确运行Mocha测试,但是livereload遇到麻烦。

What I would like to do is have it run mocha tests in browser, so I can use console debugging and/or richer output formats. 我想做的是让它在浏览器中运行Mocha测试,因此我可以使用控制台调试和/或更丰富的输出格式。 I have set up a test:browser task in grunt: 我在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 );
});

Have added "connect:livereload_test" and modified "watch:livereload": 添加了“ connect:livereload_test”并修改了“ watch:livereload”:

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

and: 和:

        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}'
            ]
        }

respectively. 分别。 Seems to serve test/index.html successfully. 似乎可以成功提供test / index.html。 However, when I modify a test/spec/test.js to change test description (for example), it notices the change, but the test results don't reflect the change. 但是,当我修改test / spec / test.js来更改测试描述(例如)时,它会注意到更改,但是测试结果无法反映更改。 I assume that there is some grunt code I've missed, but what could it be? 我以为我错过了一些咕unt的代码,但是可能是什么呢?

We have implemented mocha tests runs in browser with livereload in generator-backbone . 我们已经在generator-backbone中的 livereload中实现了在浏览器中运行的mocha测试。

The livereload snippet is generated by connect-livereload . livereload代码片段由connect-livereload生成。

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

But require('connect-livereload') alone won't insert into index.html, you need to specify it in the connect:test 但是仅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)
                ];
            }
        }
    },

Check the lrSnippet in the middleware . 检查中间件中lrSnippet

Then we need to specify the task, in generator-backbone we have grunt test:server . 然后我们需要指定任务,在generator-backbone中,我们有grunt test:server ( source ) 来源

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

You can find our discussions on the same on yeoman/generator-backbone/issues . 您可以在yeoman / generator-backbone / issues上找到我们的讨论。 My initial workaround for the same is available as gist , if you want to take a look. 如果您想看一看,我最初的解决方法可与gist一起使用。

Hope that helps you. 希望对您有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM