2014-09-15 15 views
5

Używam Yeoman + Angular Generator dla mojej aplikacji i biegam ciężko, aby dogadać się z Jasmine! To tutaj utknąłem. Chcę móc używać selektorów jQuery z testami Jasmine. Zainstalowałem pakiety karma-jasmine i karma-jasmine-jquery. Potem zainstalowałem go na altanę (jestem nowy i nie mam pojęcia, co powinno być zainstalowane na co!). Mam ręcznie dodaje ścieżkę w moim karma.conf.js, ale nadal pojawia się komunikat, że w ten sposób:Brak dostawcy dla Jasmine-jquery?

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

To jest jak moja karma config wygląda następująco:

// 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_' 
    }); 
}; 

Odpowiedz

8

miałem ten sam problem jak ten . Naprawiono to przez dodanie java karma-jaśminu do tablicy wtyczek w pliku karma.conf.js. To jest mój pełny plik 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_' 
    }); 
}; 

Druga zmiana Zrobiłem to, że zgodnie z docs jaśminu-jquery wymaga jaśmin wersji co najmniej 0.2.0. Generator podaje wersję 0.1.5 (przynajmniej wczoraj to zrobiła). Aby to naprawić, uruchomiłem "npm install [email protected] --save-dev". Dev zapisać należy to zrobić, ale upewnij się, że masz odpowiednie pakiety wymienione w devDependencies w package.json korzeniowego dla mnie mam:

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

Oczywiście powinny one odpowiadać faktycznym pakietów w węźle modułów

Nadzieja pomaga

C

+0

Nice! Pozwól, że spróbuję i wrócę. –

+0

Hej, już to dodałem, a teraz mam nowy błąd: 'TypeError: jasmine jest niezdefiniowany jasmine.spiedEventsKey = function (selector, eventName) {' –

+0

Witam, Czy widzisz moją zaktualizowaną odpowiedź? Chciałbym wiedzieć, czy to działa – Cathal

Powiązane problemy