簡體   English   中英

如何使用grunt設置瀏覽器內測試?

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

我是個新手。 我正在使用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來更改測試描述(例如)時,它會注意到更改,但是測試結果無法反映更改。 我以為我錯過了一些咕unt的代碼,但是可能是什么呢?

我們已經在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一起使用。

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM