2016-01-11 19 views
6

Bu Jasmine'i kullanarak ilk kez bağımlılık olarak lodash ve ben sorunsuz benim ilk Fabrikası test etmiş. (here bakınız)Kullanım Yasemin uibModal bir hizmeti test etmek ve

angular.module('Questions', []) 
.service('QuestionsService', function($uibModal, $log, _) { 
    ... 
} 

$ uibModal UI Bootstrap gelen ve _ Lodash geçerli:

Fakat şimdi, bu hizmeti test etmek istiyorum.

describe('Service: QuestionsService', function() { 

    var QuestionsService; 

    beforeEach(inject(function(_QuestionsService_) { 
     QuestionsService = _QuestionsService_; 
    })); 

    ... 
} 

Ve çalıştığınızda o (hırıltı testi), aşağıdaki hatayı alıyorum:

Benim Yasemin testi şu ana kadar olan

Error: [$injector:unpr] Unknown provider: $uibModalProvider <- $uibModal <- QuestionsService

Ve bir noktada ben de vardı:

o yardımcı olabilir

Error: [$injector:unpr] Unknown provider: _Provider <- _ <- QuestionsService

, benim Karma conf geçerli:

module.exports = function(config) { 
    'use strict'; 
    config.set({ 
    autoWatch: true, 
    basePath: '../', 

    frameworks: [ 
     "jasmine" 
    ], 

    // list of files/patterns to load in the browser 
    files: [ 
     // bower:js 
     'bower_components/jquery/dist/jquery.js', 
     'bower_components/lodash/lodash.js', 
     'bower_components/angular/angular.js', 
     'bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.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-tpls.js', 
     'bower_components/angular-mocks/angular-mocks.js', 
     // endbower 
     "app/scripts/**/*.js", 
     "test/mock/**/*.js", 
     "test/spec/**/*.js", 
    ], 
    exclude: [ 
    ], 
    port: 8080, 
    browsers: [ 
     "PhantomJS" 
    ], 
    plugins: [ 
     "karma-phantomjs-launcher", 
     "karma-jasmine" 
    ], 
    singleRun: false, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    }); 
}; 
+0

açıkça Bower bağımlılıkları sonra bir uygulama başlatma ('app.js') tanımlamak, ancak dosyaların geri kalanından önce. Yani "app/scripts/**/*. Js" ifadesinden hemen önce. Uygulamanın önyükleme dosyasından önce karma'nın eklediği yeni dosyalar yazabilirsiniz. – Healforgreen

+1

Yardımlarınız için teşekkür ederiz. "App/scripts/**/*. Js" önce "app/scripts/app.js" yi eklemeyi denedim, ancak sorun devam etti. – didjoman

+1

Ve 'app.js'niz Lodash ve UI-Bootstrap'i içeriyor mu? angular.module ('app', ['underscore', 'ui.bootstrap']); ' – Healforgreen

cevap

0

uygulamanın modül testinde dahil edilmemiştir. QuestionService için tekrar elden testi olacaktır: Başkaları bu bulmak

describe('Service: QuestionsService', function() { 

    var QuestionsService; 

    // The module needs to be included in the test. 
    beforeEach(module('boardgameApp')); 

    beforeEach(inject(function(_QuestionsService_) { 
     QuestionsService = _QuestionsService_; 
    })); 

    ... 
} 
1

Sadece durumda. Bir yönerge kontrolörü test hatayı çözmek için, ben kavramsal böyle, $ uibModal hizmetini alay:

describe('Service: QuestionsService', function() { 

    var controller; 

    beforeEach(inject(function($controller) { 
     controller = $controller('controllerName', { 
      $uibModal : {} 
     }); 
    })); 

    ... 
} 

$ uibModal Eğer etkileşim denetleyici fonksiyonları karşı testler yazıyoruz eğer sadece boş bir nesne daha fazla olması gerekebilir Bununla. Dahil etmek hangi dosyaların tanımlanmış senin karma yapılandırma dosyasında,

İlgili konular