[英]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.