Jam*_*bri 32 angularjs gruntjs yeoman karma-runner
我正在使用Yeoman和generator-angular来管理AngularJS应用程序,但我在自动化测试方面遇到了麻烦.
运行grunt test将运行一次单元测试.通过改变karma配置块Gruntfile.js,我可以在单元测试后运行E2E测试,添加e2e:
karma: {
//...
e2e: {
configFile: 'karma-e2e.conf.js',
singleRun: true
}
},
Run Code Online (Sandbox Code Playgroud)
太棒了:现在当我键入grunt test所有测试时都会运行.但它们只运行一次,并且有很大的开销(启动指南针,运行服务器,启动Chrome进程等).相反,服务器和Chrome进程应该保持运行,当我保存测试时,应该重新运行测试.
我可以通过修改都达到这个karma.conf.js和karma-e2e.conf.js和设置singleRun = true,然后在运行karma start在一个终端窗格,karma start karma-e2e.conf.js在另一个.如果业力配置中的任何端口都没有发生冲突(默认情况下它们会这样做),这是有效的.现在我绕过了Grunt而只是做了我自己的事情(这似乎有点傻,因为Grunt应该让事情变得更容易).
无论如何,经过一些更改(修复?) - 为了简洁而没有详细说明 - 这有效但不会削减它:我现在必须运行两个不同的命令并密切关注两个不同的终端窗格.当然有更好的方法.
如何运行单个命令来观察我的测试文件并重新运行测试?
奖金问题:为什么地球上没有提供此功能?这只是发电机角度开发人员没有足够时间来实现这个问题的问题吗?我问,因为我只是刚刚进入Angular/Yeoman/Karma(你可能已经注意到了),并且觉得E2E和单元测试的自动化测试对于工作流程至关重要.
正如我在你的问题评论中提到的 - PhantomJS省去了很多麻烦.除此之外,我相信你可以处理Gruntfile中的所有内容,然后继续运行grunt test以启动整个过程.
grunt-karma允许使用一些方便的附加组件完全自定义您的业力选项.
来自文档:
....
您可以直接覆盖任何配置文件的设置:
Run Code Online (Sandbox Code Playgroud)karma: { unit: { configFile: 'karma.conf.js', runnerPort: 9999, singleRun: true, browsers: ['PhantomJS'] } }
共享配置
如果您有多个目标,则在它们之间共享通用配置设置可能会有所帮助.Grunt-karma通过使用options属性来支持这一点:
Run Code Online (Sandbox Code Playgroud)karma: { options: { configFile: 'karma.conf.js', runnerPort: 9999, browsers: ['Chrome', 'Firefox'] }, continuous: { singleRun: true browsers: ['PhantomJS'] }, dev: { reporters: 'dots' } }
此外,您可能希望在Yeoman的生成器角度Gruntfile代码中窥探,看看还有哪些可用或至少可模拟.
| 归档时间: |
|
| 查看次数: |
5275 次 |
| 最近记录: |