2014-09-15 3 views
5

Я использую Yeoman + Angular Generator для моего приложения, и я бегал вокруг, чтобы ладить с Жасмин! Вот где я застрял. Я хочу иметь возможность использовать селектора jQuery с тестами Jasmine. Я установил пакеты karma-jasmine и karma-jasmine-jquery. Затем я установил его для беседки (я новичок, и я понятия не имею, что нужно установить для чего!). Я вручную добавить путь в моей karma.conf.js, но я все еще получаю сообщение, что говорит это:Нет провайдера для Jasmine-jquery?

Running "karma:unit" (karma) task 
Warning: No provider for "framework:jasmine-jquery"! (Resolving: framework:jasmine-jquery) Use --force to continue. 

Это как моя карма конфигурации выглядит следующим образом:

// Karma configuration 
// http://karma-runner.github.io/0.12/config/configuration-file.html 
// Generated on 2014-09-12 using 
// generator-karma 0.8.3 

module.exports = function(config) { 
    'use strict'; 

    config.set({ 
    // enable/disable watching file and executing tests whenever any file changes 
    autoWatch: true, 

    // base path, that will be used to resolve files and exclude 
    basePath: '../', 

    // testing framework to use (jasmine/mocha/qunit/...) 
    frameworks: ['jasmine-jquery', 'jasmine'], 

    // list of files/patterns to load in the browser 
    files: [ 
     'bower_components/jasmine-jquery/lib/jasmine-jquery.js', 
     'bower_components/angular/angular.js', 
     'bower_components/angular-mocks/angular-mocks.js', 
     'bower_components/angular-animate/angular-animate.js', 
     'bower_components/angular-cookies/angular-cookies.js', 
     'bower_components/angular-resource/angular-resource.js', 
     'bower_components/angular-route/angular-route.js', 
     'bower_components/angular-sanitize/angular-sanitize.js', 
     'bower_components/angular-touch/angular-touch.js', 
     'bower_components/angular-bootstrap/ui-bootstrap.js', 
     'app/scripts/**/*.js', 
     //'test/mock/**/*.js', 
     'test/spec/**/*.js', 
     'app/views/*.html' 
    ], 

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

    // web server port 
    port: 8080, 

    // Start these browsers, currently available: 
    // - Chrome 
    // - ChromeCanary 
    // - Firefox 
    // - Opera 
    // - Safari (only Mac) 
    // - PhantomJS 
    // - IE (only Windows) 
    browsers: [ 
     'PhantomJS' 
    ], 

    // Which plugins to enable 
    plugins: [ 
     'karma-phantomjs-launcher', 
     'karma-jasmine', 
     'karma-ng-html2js-preprocessor' 
    ], 

    preprocessors: { 
     'app/views/*.html': 'ng-html2js' 
    }, 

    ngHtml2JsPreprocessor: { 
     stripPrefix: 'app/', 
     moduleName: 'views' 
    }, 

    // Continuous Integration mode 
    // if true, it capture browsers, run tests and exit 
    singleRun: false, 

    colors: true, 

    // level of logging 
    // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 
    logLevel: config.LOG_INFO, 

    // Uncomment the following lines if you are using grunt's server to run the tests 
    // proxies: { 
     // '/': 'http://localhost:9000/' 
    // }, 
    // URL root prevent conflicts with the site root 
    // urlRoot: '_karma_' 
    }); 
}; 

ответ

8

У меня была такая же проблема, как это , Исправлено, добавив karma-jasmine-jquery в массив плагинов в файле karma.conf.js. Это мой karma.conf в полном объеме.

module.exports = function(config) { 
    'use strict'; 

    config.set({ 
    // enable/disable watching file and executing tests whenever any file changes 
    autoWatch: true, 

    // base path, that will be used to resolve files and exclude 
    basePath: '../', 

    // testing framework to use (jasmine/mocha/qunit/...) 
    frameworks: ['jasmine-jquery', 'jasmine'], 

    // list of files/patterns to load in the browser 
    files: [ 
     'bower_components/angular/angular.js', 
     'bower_components/angular-mocks/angular-mocks.js', 
     'app/scripts/**/*.js', 
     'test/mock/**/*.js', 
     'test/spec/**/*.js' 
    ], 

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

    // web server port 
    port: 8080, 

    // Start these browsers, currently available: 
    // - Chrome 
    // - ChromeCanary 
    // - Firefox 
    // - Opera 
    // - Safari (only Mac) 
    // - PhantomJS 
    // - IE (only Windows) 
    browsers: [ 
     'PhantomJS' 
    ], 

    // Which plugins to enable 
    plugins: [ 
     'karma-phantomjs-launcher', 
     'karma-jasmine-jquery', 
     'karma-jasmine', 

    ], 

    // Continuous Integration mode 
    // if true, it capture browsers, run tests and exit 
    singleRun: false, 

    colors: true, 

    // level of logging 
    // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 
    logLevel: config.LOG_INFO, 

    // Uncomment the following lines if you are using grunt's server to run the tests 
    // proxies: { 
    // '/': 'http://localhost:9000/' 
    // }, 
    // URL root prevent conflicts with the site root 
    // urlRoot: '_karma_' 
    }); 
}; 

Другое изменение я сделал то, что в соответствии с жасмином-JQuery документации требует жасмин версии, по крайней мере 0.2.0. Генератор дает версию 0.1.5 (по крайней мере вчера это сделал для меня). Поэтому, чтобы исправить это, я побежал «npm install [email protected] --save-dev». Сохранить DEV должен это сделать, но убедитесь, что у вас есть правильные пакеты, перечисленные в devDependencies в корневом package.json для меня есть:

"karma-jasmine": "^0.2.0", 
"karma-jasmine-jquery": "^0.1.1", 

Очевидно, они должны соответствовать фактическим пакетам в узлах-модулях

Надеется, что это помогает

C

+0

Nice! Пожалуйста, позвольте мне попробовать и вернуться. –

+0

Привет, у меня уже было это добавлено в conf, и теперь у меня есть новая ошибка: 'TypeError: jasmine is undefined jasmine.spiedEventsKey = function (selector, eventName) {' –

+0

Привет, Вы видели мой обновленный ответ? Мне интересно узнать, есть ли у вас работа – Cathal

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