0

У меня была существующая сборка с использованием Maven, Karma, PhantomJS и Jasmine, работающих в Windows7, с использованием оболочки Cygwin Bash.Karma/PhantomJS работает в Windows, тот же конфиг на Linux не отправляет сообщения на PhantomJS

Теперь я пытаюсь получить ту же сборку, которая работает на виртуальной машине CentOS, указывая на ту же рабочую область.

Когда я запускаю Karma на виртуальной машине, он запускает Karma и PhantomJS «потому что нет сообщения в 10000 ms». Я попытался увеличить тайм-аут захвата, но это не имело никакого значения.

Есть ли что-то, что я могу сделать, чтобы получить больше диагностических данных, которые могли бы рассказать мне, почему сообщения не доходят до PhantomJS от Karma?

В Windows я использую Karma v0.12.16 и PhantomJS 1.9.7. На VM CentOS я использую Karma v0.12.24 и PhantomJS 1.9.8.

Вот мой "karma.config.js":

module.exports = function(config) { 
    'use strict'; 
    config.set({ 
basePath: '../../../..', 
frameworks: ['jasmine'], 
files: [ 
    "http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js", 
    "http://code.jquery.com/jquery-migrate-1.2.1.js", 
    "src/main/webapp/js/libs/jquery.coo.kie.js", 
    "src/main/webapp/js/libs/jquery.address-1.3.1.js", 
    "src/main/webapp/js/libs/modernizr-1.6.min.js", 
    "src/main/webapp/js/libs/underscore.js", 
    "src/main/webapp/js/mylibs/util.js", 
    "src/main/webapp/js/mylibs/controller.js", 
    "src/test/webapp/js/init.js", 
    "src/main/webapp/js/mylibs/config.js", 
    "src/main/webapp/js/mylibs/controller.daily.js", 
    "src/main/webapp/js/mylibs/controller.daily.rate-table.js", 
    "src/main/webapp/js/mylibs/controller.diagnostic.page.js", 
    "src/main/webapp/js/mylibs/controller.realtime.matrix-view.js", 
    "src/main/webapp/js/mylibs/controller.realtime.rate-table.js", 
    "src/main/webapp/js/mylibs/controller.realtime.subway-map.js", 
    "src/main/webapp/js/mylibs/data.daily.js", 
    "src/main/webapp/js/mylibs/data.realtime.js", 
    "src/main/webapp/js/mylibs/diagnostic.controller.js", 
    "src/main/webapp/js/mylibs/html.js", 
    "src/main/webapp/js/mylibs/html.daily.js", 
    "src/main/webapp/js/mylibs/html.diagnostic.js", 
    "src/main/webapp/js/mylibs/html.realtime.js", 
    "src/main/webapp/js/mylibs/html.realtime.matrix-view.js", 
    "src/main/webapp/js/mylibs/routes.js", 
    "src/main/webapp/js/mylibs/uverse.config.js", 
    "src/test/webapp/js/data.daily.test.js", 

    "http://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.js", 
    "http://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-resource.js", 
    "src/test/webapp/js/libs/angular-mocks.js", 
    "src/main/webapp/js/diag/libs/ui-bootstrap-tpls-0.10.0.js", 
    "src/main/webapp/js/diag/libs/ng-table.src.js", 
    "src/main/webapp/js/diag/constants.js", 
    "src/main/webapp/js/diag/diagapp.js", 
    "src/main/webapp/js/diag/diagMod.js", 
    "src/main/webapp/js/diag/dataSourcesMod.js", 
    "src/main/webapp/js/diag/queriesMod.js", 
    "src/main/webapp/js/diag/handlersMod.js", 
    "src/main/webapp/js/diag/workflowMappingsMod.js", 
    "src/main/webapp/js/diag/configurationMod.js", 
    "src/main/webapp/js/diag/commonErrorsMod.js", 

    "src/test/webapp/js/diag/diagapp.test.js" 
    ], 
exclude: [ 
], 
plugins:[ 
    'karma-jasmine', 
    'karma-coverage', 
    'karma-junit-reporter', 
    'karma-phantomjs-launcher', 
    'karma-chrome-launcher', 
    'karma-firefox-launcher', 
    'karma-ie-launcher' 
    ], 
preprocessors: { 
    "src/main/webapp/js/mylibs/*.js": 'coverage', 
    "src/main/webapp/js/diag/*.js": 'coverage', 
}, 
coverageReporter: { 
    type: "lcov", 
    dir: "target/karma-coverage" 
}, 
junitReporter: { 
    outputFile: 'target/surefire-reports/TEST-karma.xml' 
}, 
reporters: ['dots', 'junit'], 
port: 9876, 
colors: true, 
logLevel: config.LOG_INFO, 
autoWatch: true, 
browsers: ['Chrome'], 
captureTimeout: 60000, 
singleRun: false 
    }); 
}; 

А вот команда Карма линии я бегу:

karma start /media/sf_Users/<myuid>/workspace2/SunlightGUI/src/test/webapp 
    /js/karma.conf.js --browsers PhantomJS --reporters dots,junit,coverage 
    --single-run --no-auto-watch --colors false --log-level info 

ответ

0

Используйте следующий процесс:

  • Отрасль karma.conf.js
  • Удалить websocket от транспортов:

    transports: ['flashsocket', 'xhr-polling', 'jsonp-polling'] 
    
  • Использования опроса:

    usePolling: true 
    
  • Используйте require("os").cwd(), чтобы получить абсолютный путь

  • Используйте переменную для хранения абсолютного пути с косыми чертами, такими как:

    var foo = process.cwd() + "/"; 
    config.set({ 
          basePath: foo, 
    
  • Префикс каждый путь в массиве с files абсолютным путем, например:

    foo + 'src/test/webapp/js/diag/diagapp.test.js', 
    

Список литература