Le Test d'unité d'injection de dépendance

Je suis nouvelle marque de jasmin et de karma. Je crois que j'ai la configuration de l'environnement correctement et je suis capable de courir très de base des tests unitaires, mais dès que j'essaie d'instancier un contrôleur je me suis donné un inconnu fournisseur d'erreur et je ne sais pas comment déboguer. Ai-je besoin de passer dans un stateProvider dépendance? Je ne vois pas cela dans l'angle de graines exemple.

De verdure.json:

{
"name": "starter",
  "description": "A starter project for AngularJS",
  "version": "2.0.0",
  "homepage": "https://starter.com",
  "private": true,
  "dependencies": {
      "angular": "1.2.x",
      "angular-route": "1.2.x",
      "angular-loader": "1.2.x",
      "angular-mocks": "~1.2.15"
  }
}

Maison De Contrôleur:

angular.module('home').controller('Home', function($scope, $rootScope, $state) {

    console.log($scope.pageType);

    $rootScope.pageType = 'home';

    /*
     * Takes in a state and transitions the app to that state.
     */
    $scope.goTo = function(value) {
        $state.transitionTo(value);
    }

    /*
     * Handles what happens after clicking log-in
     */
    $scope.loginClicked = function() {
        $state.transitionTo('log-in');
    }
});

Fichier de Test:

'use strict';

/* jasmine specs for controllers go here */

describe('Home', function() {
    beforeEach(module('home'));

    it('should run tests', inject(function() {
        expect(null).toBeDefined();
    }));

    it('should not say true equals false', function() {
        expect(false).not.toBe(true);
    });

    it('should say true equals true', function() {
        expect(true).toBe(true);
    });

    it('should say false does not equal true', function() {
        expect(false).not.toBe(true);
    });

    it('should create "phones" model with 3 phones', inject(function($controller,$rootScope) {

    /*
     * 
     * COMMENTING OUT THESE LINES = PASS
     *
     */
        var scope = $rootScope.$new(),
            ctrl = $controller('Home', {$scope:scope});
        expect(ctrl).not.toBe(null);
    }));

});

Erreur:

    Error: [$injector:unpr] Unknown provider: $stateProvider <- $state
http://errors.angularjs.org/1.2.16/$injector/unpr?p0=%24stateProvider%20%3C-%20%24state
at /Users/jlett/bower_components/angular/angular.js:78:12
at /Users/jlett/bower_components/angular/angular.js:3705:19
at Object.getService [as get] (/Users/jlett/bower_components/angular/angular.js:3832:39)
at /Users/jlett/bower_components/angular/angular.js:3710:45
at getService (/Users/jlett/bower_components/angular/angular.js:3832:39)
at invoke (/Users/jlett/bower_components/angular/angular.js:3859:13)
at Object.instantiate (/Users/jlett/bower_components/angular/angular.js:3880:23)
at /Users/jlett/bower_components/angular/angular.js:7134:28
at null.<anonymous> (/Users/jlett/test/unit/home-controller_tests.js:26:20)
at Object.invoke (/Users/jlett/bower_components/angular/angular.js:3869:17)
Error: Declaration Location
at window.inject.angular.mock.inject (/Users/jlett/bower_components/angular-mocks/angular-mocks.js:2132:25)
at null.<anonymous> (/Users/jlett/test/unit/home-controller_tests.js:24:54)
at /Users/jlett/zoetis-rimadyl-mobile/test/unit/home-controller_tests.js:5:1
Est-il possible que vous êtes en quelque sorte de ne pas y compris les angular-ui-router dans votre karma config? En fait, je ne vois pas ça dans votre bower.json. Êtes-vous y compris l'interface utilisateur du routeur??

OriginalL'auteur jeffctown | 2014-04-23