Опитвам се да тествам моя AngularJS контролер, използвайки Jasmine с Karma. Когато изпробвам документирана процедура за конфигуриране на тест на контролер, $scope не се създава. Всъщност изглежда, че предишното изобщо не се изпълнява.
Ето моята декларация за контролера:
angular.module("myApp", ["ngCookies"])
.controller("myCtrl", function($scope, $window, $location, MyService,
$timeout, $log, $cookies, $q) {
Моят тест изглежда така:
describe("MyController test", function() {
var $scope;
beforeEach(
module("myApp", ["ngCookies"]));
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new(); // It looks like this is never called
scope =$scope;
$controller("myCtrl", {$scope: $scope});
}));
it("Checks the state of various units", function() {
...
});
Изглежда, че beforeEach никога не се извиква. Предполагам, че трябва да инжектирам останалите си свойства в контролера, но ако е така, не съм сигурен как.
Това е грешката в дневника на пробното изпълнение
FAILED MyController test Checks myFunction starting from blank state
Error: [$injector:modulerr] Failed to instantiate module ngCookies due to:
Error: [ng:areq] Argument 'fn' is not a function, got string
http://errors.angularjs.org/1.3.14/ng/areqp0=fn&p1=not%20a%20function%2C%20got%20string