Dies ist mein erstes Mal mit Jasmine, und ich habe meine erste Fabrik ohne Probleme getestet.Verwenden Sie Jasmine, um einen Dienst mit uibModal und lodash als Abhängigkeiten zu testen
Aber jetzt möchte ich diesen Service testen:
angular.module('Questions', [])
.service('QuestionsService', function($uibModal, $log, _) {
...
}
$ uibModal von UI Bootstrap ist (siehe here) und _ ist Lodash.
Mein Jasmin Test so weit ist:
describe('Service: QuestionsService', function() {
var QuestionsService;
beforeEach(inject(function(_QuestionsService_) {
QuestionsService = _QuestionsService_;
}));
...
}
Und wenn ich versuche, es (Grunzen-Test), erhalte ich folgende Fehlermeldung:
Error: [$injector:unpr] Unknown provider: $uibModalProvider <- $uibModal <- QuestionsService
Und irgendwann hatte ich auch:
Error: [$injector:unpr] Unknown provider: _Provider <- _ <- QuestionsService
Wenn es helfen kann, mein Karma conf ist:
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,
});
};
In Ihrer Karma-Konfigurationsdatei, in der Sie definieren, welche Dateien eingeschlossen werden sollen, definieren Sie explizit Ihre Anwendungsinitialisierung ('app.js') nach den Abhängigkeiten, aber vor dem Rest Ihrer Dateien. Es würde also direkt vor "app/scripts/**/*. Js" gehen. Es ist möglich, dass Sie neue Dateien geschrieben haben, die karma vor der Startdatei der Anwendung hinzufügt. – Healforgreen
Vielen Dank für Ihre Hilfe. Ich habe versucht, meine "app/scripts/app.js" vor "app/scripts/**/*. Js" hinzuzufügen, aber das Problem ist geblieben. – didjoman
Und deine 'app.js' enthalten Lodash und UI-Bootstrap? 'angular.module ('app', ['unterstrichen', 'ui.bootstrap']);' – Healforgreen