我目前在E2 AngularJS应用程序和Grunt中测试了量角器。 我跟着从https://www.npmjs.org/package/grunt-protractor-runner安装,和我有2个问题:AngulrJS + Grunt +量角器:keepAlive和手表
第一:
我在想,如果有可能,有来自我的单元测试与噶这种行为:
- 开始测试服务器
- 运行所有测试
- 当测试文件或任何其他HTML/JS文件更改,重新运行所有测试
我非常喜欢这种带有实时观看和自动重新加载的方式,因为它减少了整个套件的启动时间,并使一切都变得更快。
但是使用量角器时,我遇到了一个问题:每次我用Grunt开始测试时,测试都会执行,然后一切都会关闭。虽然,我在Gruntfile.js
的量角器配置部分中将keepAlive
选项设置为true
。有任何想法吗?
二:
我不能让它工作,量角器连接到我的角度应用程序。我是否必须启动grunt服务器才能提供文件?当我尝试访问我的测试页面时,如browser.get('app/index.html');
或browser.get('#/');
,我无法访问该页面。我已经玩了我的protractor.conf.js
baseUrl
选项(如baseUrl: 'http://localhost:' + (process.env.HTTP_PORT || '8000')
)。但对我来说,看起来像,我必须在之前启动grunt服务器,对吗?我该怎么做?或者有没有其他选项可以访问我的角度应用程序?我正在用罗盘使用sass,所以我认为,我需要以某种方式获得。
UPDATE:
我找到了一个解决方法。我注册了以下咕噜任务:
grunt.registerTask('e2e', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'concurrent:server',
'autoprefixer',
'protractor',
'watch'
]);
当grunt e2e
我的服务器被启动开始,根据我protractor.conf.js
内baseUrl: 'http://10.0.0.200:9001'
,和我的测试运行。测试完成后,watch
任务将监视已更改的文件,并在需要时重新运行量角器。
这样做的缺点是,每当watch
启动protractor
任务时,都会生成一个新的Chrome实例,并在测试中死亡。 有没有办法阻止量角器杀死Chrome实例?
此外,我想知道为什么在每个教程中,它总是这样说:“只需运行grunt protractor
并执行测试......”。 为什么我需要一个额外的任务来启动我的grunt服务器来访问我的angularjs应用程序?
这里是我的配置文件:
protractor.conf.js
exports.config = {
capabilities: {
'browserName': 'chrome'
},
chromeOnly: true,
specs: ['test/e2e/**/*.js'],
jasmineNodeOpts: {
showColors: true
},
framework: 'jasmine'
};
Gruntfile.js
module.exports = function(grunt) {
// Load grunt tasks automatically
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('grunt-protractor-runner');
grunt.initConfig({
// ...
protractor: {
options: {
configFile: "protractor.conf.js",
keepAlive: false,
noColor: false
},
run: {}
},
// ...
});
// ...
grunt.registerTask('test:e2e', [
'clean:server',
'compass:dist',
'compass:server',
'autoprefixer',
'connect:test',
'protractor'
]);
// ...
}
的感谢!
为什么downvote?请解释一下 – 23tux
另一个倒退,你能解释我的问题有什么问题来帮助改进它吗? – 23tux