2014-09-15 10 views
5

Ich benutze Yeoman + Angular Generator für meine Anwendung und ich bin rumgerannt um mit Jasmine auszukommen! Hier stecke ich fest. Ich möchte jQuery-Selektoren mit Jasmine-Tests verwenden können. Ich habe die karma-jasmine und karma-jasmine-jquery Pakete installiert. Dann habe ich es für bower installiert (ich bin neu und ich habe keine Ahnung, was für was installiert werden sollte!). Ich habe manuell hinzugefügt den Weg in meine karma.conf.js, aber ich immer noch die Meldung erhalten, dass das sagt:Kein Anbieter für Jasmine-Jquery?

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

Dies ist, wie mein Karma Config wie folgt aussieht:

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

Antwort

8

ich das gleiche Problem wie dieses hatte . Es wurde behoben, indem Karma-Jasmine-Jquery zum Plugins-Array in karma.conf.js hinzugefügt wurde. Das ist meine karma.conf in vollem Umfang.

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

Die andere Änderung, die ich getroffen wird, dass gemäß der Jasmin-jquery docs es Jasmin-Version mindestens 0.2.0 erfordert. Der Generator gibt eine Version von 0.1.5 (zumindest hat es für mich gestern getan). Um das zu beheben, habe ich 'npm install [email protected] --save-dev' ausgeführt. Die Entwickler sparen sollten dies tun, aber stellen Sie sicher, dass Sie die richtigen Pakete in den devDependencies für mich in der Wurzel package.json aufgelistet habe ich haben:

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

Offensichtlich sind diese mit den tatsächlichen Pakete in node-Module entsprechen

Hoffe, es

C

+0

Nizza hilft! Bitte lass mich das versuchen und zurückkommen. –

+0

Hey ich hatte bereits diese in conf hinzugefügt, und jetzt habe ich einen neuen Fehler: 'TypeError: Jasmin ist undefined Jasmine.spiedEventsKey = Funktion (Selektor, EventName) {' –

+0

Hallo, hast du meine aktualisierte Antwort? Ich bin interessiert zu wissen, ob Sie es zur Arbeit haben – Cathal

Verwandte Themen