2016-05-12 4 views
0

У меня есть образец углового приложения, как показано ниже

(function() { 

    angular.module("WatchApp", []) 
     .controller("WatchController", function ($scope) { 
      $scope.message = "hello"; 
     }); 
}()); 

У меня есть тестовый пример, как показано ниже

describe("WatchController", function() { 

    var $scope; 

    beforeEach(module("WatchApp")); 
    beforeEach(
     inject(function (_$controller_) { 
      $scope: {}; 
      controller: _$controller_("WatchController", { 
       $scope: $scope 
      }); 

     })); 

    describe("Initialization", function() { 
     it("Should be truthy", function() { 
      expect(true).toBeTruthy(); 
     }) 
    }) 

}); 

Я знаю, что тестовый пример не правильно, просто написал, чтобы проверить, правильны ли конфигурации, но он всегда дает ошибку, как показано ниже:

PhantomJS 2.1.1 (Windows 7 0.0.0) WatchController Initialization Should be truthy FAILED 
     TypeError: undefined is not an object (evaluating '$scope.message = "hello"') (line 5) 
     C:/robin/Studies/Angularjs/ut/app/controllers/watchController.js:5:19 
     [native code] 
     [email protected]:/robin/Studies/Angularjs/ut/bower_components/angular/angular.js:4680:61 
     [email protected]:/robin/Studies/Angularjs/ut/bower_components/angular/angular.js:10130:39 
     C:/robin/Studies/Angularjs/ut/bower_components/angular-mocks/angular-mocks.js:2194:21 
     C:/robin/Studies/Angularjs/ut/test/controllers/watchControllerSpec.js:9:38 
     [email protected]:/robin/Studies/Angularjs/ut/bower_components/angular/angular.js:4665:24 
     [email protected]:/robin/Studies/Angularjs/ut/bower_components/angular-mocks/angular-mocks.js:2965:26 
     [email protected]:/robin/Studies/Angularjs/ut/bower_components/angular-mocks/angular-mocks.js:2931:28 
     C:/robin/Studies/Angularjs/ut/test/controllers/watchControllerSpec.js:7:15 
     global [email protected]:/robin/Studies/Angularjs/ut/test/controllers/watchControllerSpec.js:1:9 

Пожалуйста, позвольте я знаю, что это вопрос

ответ

0

Попробуйте

inject(function (_$controller_, _$scope_) { 
     $scope: _$scope_; 
     controller: _$controller_("WatchController", { 
      '$scope': $scope 
     }); 

    })); 
+0

Его бросание ниже исключения. Ошибка: [$ injector: unpr] Неизвестный поставщик: $ scopeProvider <- $ scope – robin

+0

Woops, изменил некоторые вещи выше, дайте это? – mwild

+0

та же проблема все еще – robin

0

Просто убедитесь, внедрить и использовать $rootScope должным образом в тесте.

describe("WatchController", function() { 

    var $scope, 
     $controller; 

    beforeEach(module("WatchApp")); 
    beforeEach(
    inject(function (_$controller_, _$rootScope_) { 
     $scope = _$rootScope_.$new(); 
     $controller = _$controller_("WatchController", { 
     $scope: $scope 
     }); 
    })); 

    describe("Initialization", function() { 
    it("Should be truthy", function() { 
     expect(true).toBeTruthy(); 
    }); 

    it("should set a message", function() { 
     expect($scope.message).toBe("hello"); 
    }); 
    }); 
}); 
+0

не нужна пустая область, потому что я использую: вместо = to – robin

0

выпуска фиксированного путем изменений

inject(function (_$controller_) { 
      $scope: {}; 
      controller: _$controller_("WatchController", { 
       $scope: $scope 
      }); 

к

inject(function (_$controller_) { 
      $scope= {}; 
      controller: _$controller_("WatchController", { 
       $scope: $scope 
      }); 
Смежные вопросы