Карма не запускает обратные вызовы реализации Jasmine - PullRequest
0 голосов
/ 28 июня 2019

У меня есть небольшой набор тестов Жасмин, которые я пытаюсь запустить с Кармой.Любая помощь очень ценится.

Я могу нормально запускать тесты, если запускаю команду "Жасмин".Однако, когда я пытаюсь использовать Карму (начало кармы --singleRun = true), браузер открывается, но больше ничего не происходит до тех пор, пока Карма не истечет время с этим:

26 06 2019 14:40:24.431:INFO [karma]: Delaying execution, these browsers are not ready: Chrome 75.0.3770 (Windows 10.0.0)
26 06 2019 14:42:01.326:WARN [Chrome 75.0.3770 (Windows 10.0.0)]: Disconnected (0 times), because no message in 160000 ms.
26 06 2019 14:42:01.327:DEBUG [Chrome 75.0.3770 (Windows 10.0.0)]: CONFIGURING -> DISCONNECTED
Chrome 75.0.3770 (Windows 10.0.0) ERROR
  Disconnected, because no message in 160000 ms.
26 06 2019 14:42:01.330:DEBUG [launcher]: CAPTURED -> BEING_KILLED
26 06 2019 14:42:01.332:DEBUG [launcher]: BEING_KILLED -> BEING_FORCE_KILLED
26 06 2019 14:42:01.333:WARN [karma]: No captured browser, open http://localhost:9876/

Chrome 75.0.3770 (Windows 10.0.0): Executed 0 of 0 DISCONNECTED (2 mins 40.011 secs / 0 secs)

Если я вместо этого запускаю с -singleRun = false и установил точки останова в моем тесте, затем запустил «karma run karma.conf.js» из новой командной строки, я заметил, что точки останова внутри обратных вызовов реализации для моих тестов никогда не попадут.Другие точки останова попадают просто отлично.

Например, в тесте ниже:

  describe(">String Utils", function() {
      it("should be able to lower case a string",function() {
          expect(utils.toLowerCase).toBeDefined();
          expect(utils.toLowerCase("HELLO WORLD")).toEqual("hello world");
      });

Точка останова в функциях "description" или "it" получит удар.Но точка останова любого из «ожидаемых» никогда не будет достигнута.

Я вошел в функции «it», чтобы увидеть, есть ли ошибка при настройке спецификации жасмина, но все выглядит нормально.

Однако Карма никогда не вызывает обратные вызовы реализации. И браузер постоянно "простаивает"

Вот мой karma.conf.js.Ниже - мой spec-bundle.js, а ниже - мой веб-пакет.

Если есть что-то еще, что вы хотели бы увидеть, я могу опубликовать его, или вы можете просмотреть его на моем репозитории github: https://github.com/webgirlwonder/karma-jasmine-test

// Karma configuration
// Generated on Fri May 17 2019 10:37:04 GMT-0500 (Central Daylight Time)

var webpackConfig = require('./webpack.config.js');

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','requirejs'],

    // list of files / patterns to load in the browser
    files: [
      'spec-bundle.js'
    ],


    // list of files / patterns to exclude
    exclude: [
    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    // preprocessors: {
      // '*.js': [ 'webpack' ],
      // 'spec/*Spec.js': ['webpack' ]
    // },

    preprocessors: {
      'spec-bundle.js': ['webpack' ]
    },


    webpack: webpackConfig,


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['spec'],


    // 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_DEBUG,


    /* // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true, */


    // 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: true, */

    // Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity,
    captureTimeout: 160000,
    browserNoActivityTimeout: 160000,
  })
}

spec-bundle.js

/*
 * Create a context for all tests files below the src folder and all sub-folders.
 */
const context = require.context('./spec/', true, /\Spec\.js$/);

/*
 * For each file, call the context function that will require the file and load it up here.
 */
context.keys().forEach(context);

webpack

const config =  {
    "mode": "development",
    "entry": "./spec/MyJSUtilities.spec.js",
    "target": "node",
    "output": {
        "path": __dirname+'/static',
        "filename": "[name].[chunkhash:8].js"
    }
}

module.exports = config;

1 Ответ

0 голосов
/ 28 июня 2019

Вот конфигурация, которая работает для меня:

.babelrc

{
    "presets": ["@babel/preset-env" ]
}

karma.conf.js

const webpackConfig = require('./webpack.config');

module.exports = function (config) {
  config.set({
    basePath: '.',
    autoWatch: false,
    singleRun: true,
    browsers: [ 'Chrome' ],
    frameworks: [ 'jasmine' ],
    files: [
      './src/test.js',
    ],
    preprocessors: {
      './src/**/*.js': [ 'webpack' ],
    },
    webpack: webpackConfig,
    webpackMiddleware: {
      noInfo: true,
      stats: 'error-only',
    },
  });
};

webpack.config.js

module.exports = {
    mode: 'development',
    devtool: 'none',
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/,
          use: {
            loader: 'babel-loader',
          },
        },
      ],
    },
    externals: {
      request: {
        commonjs: 'request',
        commonjs2: 'request',
      },
      os: {
        commonjs: 'os',
        commonjs2: 'os',
      },
      process: 'process',
    },
  };

./src/test.js

const testsContext = require.context(".", true, /spec$/);
testsContext.keys().forEach(testsContext)
...