Karma.conf.js не существует

Я просто переустановил node с нуля. Я также установил yeoman, generator-angular и karma.

После создания проекта с yo angular я могу успешно grunt serve. Однако всякий раз, когда я пытаюсь grunt test, возникает следующая ошибка:

karma.conf.js does not exist

Однако karma.conf.js действительно существует в сгенерированном тестовом каталоге. Почему это произойдет?

Ответ 1

Gruntfile.js ссылается на karma.conf.js в корневом каталоге. Генератор Angular помещает его в тестовый каталог, поэтому вам нужно обновить Gruntfile.js

// Test settings
karma: {
  unit: {
    configFile: 'test/karma.conf.js',
    singleRun: true
  }
}

Также возникает проблема при запуске теста grunt с этим сгенерированным karma.conf.js. Он скажет

test/karma.conf.js:63
    colors: true,
    ^^^^^^
ERROR [config]: Invalid config file!
  SyntaxError: Unexpected identifier

Причина: запятая отсутствует после "singleRun: false".

Ответ 2

У меня также была эта проблема, но я использовал CoffeeScript. Оказалось, что CoffeeScript для karma.conf.js не создавался. karma.conf.coffee был помещен правильно в тестовую папку, но он не компилировался. Так что в моем файле grunt (под задачей кофе) я заменил это...

  test: {
    files: [{
      expand: true,
      cwd: 'test/spec',
      src: '{,*/}*.coffee',
      dest: '.tmp/spec',
      ext: '.js'
    }]
  }

С этим...

      test: {
    files: [{
      expand: true,
      cwd: 'test/spec',
      src: '{,*/}*.coffee',
      dest: '.tmp/spec',
      ext: '.js'
    },
    {
      expand: true,
      cwd: 'test',
      src: 'karma.conf.coffee',
      dest: 'test',
      ext: '.conf.js'
    }]
  }

Все, что я сделал, это убедиться, что karma.conf.coffee скомпилирован в тестовом каталоге.

Это сработало, но я все еще получал ошибки, потому что в karma.conf.coffee у некоторых файлов были неправильные расширения ('cs' вместо 'coffee'), для этих 3 строк в частности.

  'app/scripts/**/*.cs'
  'test/mock/**/*.cs'
  'test/spec/**/*.cs'

Я только что изменил расширения на coffeescript (и удалил папку mock, поскольку я не использовал его).

  'app/scripts/**/*.coffee'
  'test/spec/**/*.coffee'

после этого были выполнены сборки и тест. Я новичок в Йомен, поэтому я не уверен, что этого можно было бы легко избежать, но это то, что я должен был сделать, чтобы все работало.

Ответ 3

В моем случае я даже не нашел karma.conf.js. Однако я понял, что вы делаете

grunt --force

вы сможете получить больше информации, и вы можете получить то, что происходит внутри

Running "karma:unit" (karma) task
08 09 2015 13:16:33.928:WARN [plugin]: Cannot find plugin "karma-phantomjs-launcher".
  Did you forget to install it ?
  npm install karma-phantomjs-launcher --save-dev
08 09 2015 13:16:33.939:WARN [plugin]: Cannot find plugin "karma-jasmine".
  Did you forget to install it ?
  npm install karma-jasmine --save-dev
Warning: No provider for "framework:jasmine"! (Resolving: framework:jasmine) Used --force, continuing.

Наконец, я смог понять, что я пропустил.

Надеюсь на эту помощь.