0

У меня есть приложение, которое отлично работает. Кто-то другой реорганизовал некоторые вещи и добавил беседу для зависимостей для этого и других связанных проектов. С тех пор модульные тесты терпят неудачу. Теперь я пытаюсь это исправить.Karma AngularJS тестирование: не найдено никаких тестов, описать(), как представляется, не существует

Когда я начал, у меня была куча неудачных модульных тестов. Я запустил беседу для установки зависимостей, но теперь никаких модульных тестов не запускается вообще. Когда я смотрю исходный код моих модульных тестов, моя IDE (IntelliJ) не распознает функции describe(), beforeEach() и it(). Он распознает module() и inject() (оба от угловых-насмешек).

Вот мой karma.conf.js:

module.exports = function (config) { 
    config.set({ 
      basePath: '../', 
      frameworks: ['jasmine'], 
      files: [ 
       'app/lib/jquery/jquery.min.js', 
       'app/lib/angular/angular.js', 
       'app/lib/angular-*/angular-*.js', 
       'app/lib/mylib-core/build/js/global.js', 
       'app/lib/mylib-components/build/js/components.js', 
       'app/js/*.js', 
       'app/js/**/*.js', 
       'test/unit/**/*Spec.js', 
       'test/mocks/mockdata.js' 
      ], 
      plugins: [ 
       'karma-jasmine', 
       'karma-junit-reporter', 
       'karma-coverage', 
       'karma-chrome-launcher', 
       'karma-phantomjs-launcher' 
      ], 
      exclude: [ 
      ], 
      reporters: ['progress', 'coverage'], 
      preprocessors: { 
       'app/js/**/*.js': 'coverage' 
      }, 
      coverageReporter: { 
       type: 'html', 
       dir: 'coverage' 
      }, 
      colors: true, 
      logLevel: config.DEBUG, 
      autoWatch: true, 
      browsers: ['PhantomJS'], 
      captureTimeout: 60000, 
      singleRun: false 
     } 
    ); 
}; 

Выход из моих модульных тестов:

C:\Workset\tools\nodejs\node.exe C:\Workset\tools\npm\node_modules\karma\bin\karma start config/karma.conf.js 
DEBUG [plugin]: Loading plugin karma-jasmine. 
DEBUG [plugin]: Loading plugin karma-junit-reporter. 
DEBUG [plugin]: Loading plugin karma-coverage. 
DEBUG [plugin]: Loading plugin karma-chrome-launcher. 
DEBUG [plugin]: Loading plugin karma-phantomjs-launcher. 
DEBUG [plugin]: Loading inlined plugin (defining). 
INFO [karma]: Karma v0.10.4 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser PhantomJS 
DEBUG [launcher]: Creating temp dir at C:\foo\Temp\karma-38315490 
DEBUG [launcher]: C:\Workset\tools\npm\node_modules\karma-phantomjs-launcher\node_modules\phantomjs\lib\phantom\phantomjs.exe C:\foo\Temp\karma-38315490/capture.js 
DEBUG [preprocessor.coverage]: Processing "C:/workspace/myproject/app/js/myproject.js". 
DEBUG [preprocessor.coverage]: Processing "C:/workspace/myproject/app/js/controllers/FooController.js". 
DEBUG [preprocessor.coverage]: Processing "C:/workspace/myproject/app/js/directives/fooRating.js". 
DEBUG [preprocessor.coverage]: Processing "C:/workspace/myproject/app/js/myproject.js". 
DEBUG [preprocessor.coverage]: Processing "C:/workspace/myproject/app/js/services/fooService.js". 
DEBUG [watcher]: Resolved files: 
C:/Workset/tools/npm/node_modules/karma-jasmine/lib/jasmine.js 
C:/Workset/tools/npm/node_modules/karma-jasmine/lib/adapter.js 
C:/workspace/myproject/app/lib/jquery/jquery.min.js 
C:/workspace/myproject/app/lib/angular/angular.js 
C:/workspace/myproject/app/lib/angular-animate/angular-animate.js 
C:/workspace/myproject/app/lib/angular-animate/angular-animate.min.js 
C:/workspace/myproject/app/lib/angular-cookies/angular-cookies.js 
C:/workspace/myproject/app/lib/angular-cookies/angular-cookies.min.js 
C:/workspace/myproject/app/lib/angular-loader/angular-loader.js 
C:/workspace/myproject/app/lib/angular-loader/angular-loader.min.js 
C:/workspace/myproject/app/lib/angular-mocks/angular-mocks.js 
C:/workspace/myproject/app/lib/angular-resource/angular-resource.js 
C:/workspace/myproject/app/lib/angular-resource/angular-resource.min.js 
C:/workspace/myproject/app/lib/angular-route/angular-route.js 
C:/workspace/myproject/app/lib/angular-route/angular-route.min.js 
C:/workspace/myproject/app/lib/angular-sanitize/angular-sanitize.js 
C:/workspace/myproject/app/lib/angular-sanitize/angular-sanitize.min.js 
C:/workspace/myproject/app/lib/angular-scenario/angular-scenario.js 
C:/workspace/myproject/app/lib/angular-touch/angular-touch.js 
C:/workspace/myproject/app/lib/angular-touch/angular-touch.min.js 
C:/workspace/myproject/app/js/myproject.js 
C:/workspace/myproject/app/js/controllers/FooController.js 
C:/workspace/myproject/app/js/directives/fooRating.js 
C:/workspace/myproject/app/js/services/fooService.js 
C:/workspace/myproject/test/unit/controllers/fooControllerSpec.js 
C:/workspace/myproject/test/unit/directives/fooRatingSpec.js 
C:/workspace/myproject/test/unit/services/fooServiceSpec.js 
C:/workspace/myproject/test/mocks/mockdata.js 
DEBUG [watcher]: Watching "C:/workspace/myproject/app/lib/jquery/jquery.min.js" 
DEBUG [watcher]: Watching "C:/workspace/myproject/app/lib/angular/angular.js" 
DEBUG [watcher]: Watching "C:/workspace/myproject/app/lib" 
DEBUG [watcher]: Watching "C:/workspace/myproject/app/js" 
DEBUG [watcher]: Watching "C:/workspace/myproject/test/unit" 
DEBUG [watcher]: Watching "C:/workspace/myproject/test/mocks/mockdata.js" 
DEBUG [web-server]: serving: C:\Workset\tools\npm\node_modules\karma\static/client.html 
DEBUG [web-server]: serving: C:\Workset\tools\npm\node_modules\karma\static/karma.js 
DEBUG [karma]: A browser has connected on socket 5Njwd5GANrKy9YV2vANC 
INFO [PhantomJS 1.9.2 (Windows 7)]: Connected on socket 5Njwd5GANrKy9YV2vANC 
DEBUG [karma]: All browsers are ready, executing 
DEBUG [web-server]: serving: C:\Workset\tools\npm\node_modules\karma\static/context.html 
DEBUG [web-server]: serving: C:/Workset/tools/npm/node_modules/karma-jasmine/lib/jasmine.js 
DEBUG [web-server]: serving: C:/Workset/tools/npm/node_modules/karma-jasmine/lib/adapter.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/jquery/jquery.min.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular/angular.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-animate/angular-animate.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-animate/angular-animate.min.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-cookies/angular-cookies.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-cookies/angular-cookies.min.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-loader/angular-loader.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-loader/angular-loader.min.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-mocks/angular-mocks.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-resource/angular-resource.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-resource/angular-resource.min.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-route/angular-route.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-route/angular-route.min.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-sanitize/angular-sanitize.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-sanitize/angular-sanitize.min.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-scenario/angular-scenario.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-touch/angular-touch.js 
DEBUG [web-server]: serving: C:/workspace/myproject/app/lib/angular-touch/angular-touch.min.js 
DEBUG [web-server]: serving: C:\foo\Temp/b172f859347e22405c33fb8b757f7f6380c111f8.js 
DEBUG [web-server]: serving: C:\foo\Temp/364a64513852785c67f39bc5bd6bacfd6d007792.js 
DEBUG [web-server]: serving: C:\foo\Temp/221e578dd0aa30690853d25857681c2bdfe38fe6.js 
DEBUG [web-server]: serving: C:\foo\Temp/75b9b08be8e14ecb83a385484eb40c5b551a3294.js 
DEBUG [web-server]: serving: C:/workspace/myproject/test/unit/controllers/fooControllerSpec.js 
DEBUG [web-server]: serving: C:/workspace/myproject/test/unit/directives/fooRatingSpec.js 
DEBUG [web-server]: serving: C:/workspace/myproject/test/unit/services/fooServiceSpec.js 
DEBUG [web-server]: serving: C:/workspace/myproject/test/mocks/mockdata.js 
PhantomJS 1.9.2 (Windows 7): Executed 0 of 0 ERROR (0.363 secs/0 secs) 

Я могу видеть мои * Spec.js файлы там, а также угловое разрешение mock.js и jasmine.js. И он не дает никаких ошибок, но он считает, что есть 0 тестов (которые, я уверяю вас, не так). Так что здесь не так?

+0

Можете ли вы опубликовать код жасмина? Из моего опыта это может быть просто синтаксическая ошибка где-то, что нарушает javascript. –

+0

. Не следует ли в этом случае забрасывать реальную ошибку? Ошибок не возникает при выполнении моего кода. Но я нашел проблему: угловой сценарий перезаписывает функции регистрации тестовых единиц жасмина (описать и это). – mcv

ответ

2

Я понял. В отладочной выводе упоминается, что он загрузил C:/workspace/myproject/app/lib/angular-scenario/angular-scenario.js, и это из-за линии 'app/lib/angular-*/angular-*.js' в моем файле karma.conf.js.

Проблема с угловым сценарием.js заключается в том, что это совершенно другой тестовый фреймворк, который жасмин, но он использует тот же синтаксис, поэтому angular-scen.js определяет те же функции, что и jasmine.js, переписывая функции Мне нужны те, которые мне не нужны. Итак, все мои тесты регистрируются с угловым сценарием, а не с жасмином. Поэтому, когда жасмин выполняет все зарегистрированные тесты, он не находит тестов для выполнения.

Добавление:

exclude: [ 
    'app/lib/angular-scenario/angular-scenario.js' 
], 

моего karma.conf.js исправил проблему. Хорошо, это проблема. У меня еще много других проблем с моими испытаниями, но я сначала попытаюсь исправить их.

Смежные вопросы