在grunt中,我们通过以下方式在PhantomJs中执行单元测试.
- karma: {
- options: {
- configFile: 'karma.conf.js',runnerPort: 9876,browsers: ['Chrome']
- },unitTestDev: {
- browsers: ['PhantomJS'],singleRun: true
- }
- }
- grunt.registerTask('unitTest',['karma:unitTestDev']);
这是karma.conf.js文件.
- // Karma configuration
- // Generated on Thu Apr 03 2014 13:44:39 GMT-0500 (Central Daylight Time)
- module.exports = function(config) {
- config.set({
- // base path that will be used to resolve all patterns (eg. files,exclude)
- basePath: '',// frameworks to use
- // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['jasmine'],// list of files / patterns to load in the browser
- files: [
- {pattern: 'dist/lib/jquery/dist/jquery.js',watched: false,served: true,included: true},{pattern: 'dist/lib/jasmine-jquery/lib/jasmine-jquery.js',{pattern: 'dist/lib/angular/angular.js',{pattern: 'dist/lib/angular-route/angular-route.min.js',{pattern: 'dist/lib/angular-mocks/angular-mocks.js',{pattern: 'dist/main.min.js',{pattern: 'public/test/unit/**/*Spec.js',// fixtures
- {pattern: 'public/test/mock/**/*.json',watched: true,included: false}
- ],// list of files to exclude
- exclude: [
- ],// preprocess matching files before serving them to the browser
- // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
- preprocessors: {
- },// test results reporter to use
- // possible values: 'dots','progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['progress','html','junit','story'],htmlReporter: {
- outputDir: 'build/unit-test/html-report',templatePath: 'node_modules/karma-html-reporter/jasmine_template.html'
- },junitReporter: {
- outputFile: 'build/unit-test/junit-report/test-results.xml',suite: ''
- },// web server port
- port: 9876,// enable / disable colors in the output (reporters and logs)
- colors: true,// level of logging
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_INFO,// enable / disable watching file and executing tests whenever any file changes
- autoWatch: false,// start these browsers
- // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
- browsers: ['Chrome'],// Continuous Integration mode
- // if true,Karma captures browsers,runs the tests and exits
- singleRun: false
- });
- };
执行“karma:unitTestDev”命令时,会出现以下错误.
- Running "karma:unitTestDev" (karma) task
- INFO [karma]: Karma v0.11.14 server started at http://localhost:9876/
- INFO [launcher]: Starting browser PhantomJS
- ERROR [launcher]: Cannot start PhantomJS
- Error: spawn OK
- INFO [launcher]: Trying to start PhantomJS again (1/2).
- ERROR [launcher]: Cannot start PhantomJS
- Error: spawn OK
- INFO [launcher]: Trying to start PhantomJS again (2/2).
- ERROR [launcher]: Cannot start PhantomJS
- Error: spawn OK
- ERROR [launcher]: PhantomJS Failed 2 times (cannot start). Giving up.
- Warning: Task "karma:unitTestDev" Failed. Use --force to continue.
- Aborted due to warnings.
我们在Windows和Linux OS中遇到了上述问题.在Mac中,业力成功地在PhantomJS上执行测试.
在Windows中,如果我们在Chrome浏览器中执行上述测试,而不是PhantomJS,那么karma会成功执行所有单元测试.
以下是Package.json中与业力相关的依赖关系
- "phantomjs": "~1.9.7-3","karma": "~0.12.3","karma-chrome-launcher": "~0.1.3","karma-jasmine": "~0.1.5","karma-html-reporter": "~0.2.3","karma-junit-reporter": "~0.2.1","grunt-karma": "~0.8.2","karma-phantomjs-launcher": "~0.1.3"
让我知道是否有与PhantomJS的业力或咕噜声有任何已知问题.
解决方法
“Karma-phantomjs-launcher”v0.1.3存在问题.将其更改为v0.1.4,然后它可以正常工作.