2014-09-15 39 views
5

Tôi đang sử dụng Máy phát điện Yeoman + Angular cho ứng dụng của mình và tôi đã chạy xung quanh khó khăn để hòa hợp với Jasmine! Đây là nơi tôi bị mắc kẹt. Tôi muốn có thể sử dụng bộ chọn jQuery với các bài kiểm tra Jasmine. Tôi đã cài đặt các gói karma-jasminekarma-jasmine-jquery. Sau đó, tôi cài đặt nó cho bower (Tôi mới và tôi không có ý tưởng những gì nên được cài đặt cho những gì!). Tôi đã thêm các đường dẫn trong karma.conf.js của tôi, nhưng tôi vẫn nhận được thông báo rằng nói điều này:Không có nhà cung cấp cho Jasmine-jquery?

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

Đây là cách cấu hình nghiệp của tôi trông giống như:

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

Trả lời

8

tôi đã cùng một vấn đề như thế này . Sửa lỗi bằng cách thêm karma-jasmine-jquery vào mảng plugins trong karma.conf.js. Đây là karma.conf của tôi đầy đủ.

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

Thay đổi khác tôi thực hiện là theo tài liệu jasmine-jquery nó yêu cầu phiên bản hoa nhài ít nhất là 0.2.0. Máy phát điện cho phiên bản 0.1.5 (ít nhất nó đã làm cho tôi ngày hôm qua). Vì vậy, để khắc phục điều này tôi chạy 'npm install [email protected] --save-dev'. Các lưu dev nên làm điều này nhưng chắc chắn rằng bạn có các gói đúng được liệt kê trong devDependencies trong package.json gốc cho tôi, tôi có:

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

Rõ ràng những phải tương ứng với các gói thực tế trong nút mô-đun

Hy vọng điều này sẽ giúp

C

+0

Tốt! Hãy để tôi thử cái này và quay lại. –

+0

Hey Tôi đã có thêm điều này trong conf, và bây giờ tôi có một lỗi mới: 'TypeError: hoa nhài là undefined jasmine.spiedEventsKey = function (selector, eventName) {' –

+0

Xin chào, Bạn có thấy câu trả lời cập nhật của tôi không? Tôi quan tâm để biết nếu bạn có nó để làm việc – Cathal

Các vấn đề liên quan