2015-04-24 6 views
1

Я прочитал угловое официальное руководство и успешно начал тест. Но я попытался сделать тест для простого управления (при нажатии на кнопке булевых изменений), у меня есть следующее сообщение об ошибке: ReferenceError: Не удается найти переменные: $ Сферы

контроллер:

siteLogic = angular.module('siteLogic', []); 

siteLogic.controller('siteCtrl', ['$scope',function($scope, initMap) { 
    $scope.addingSite=false; 

    $scope.changeAddingSite = function(){ 
    $scope.addingSite= !$scope.addingSite; 
    }; 
}]); 

файл для теста:

describe('$scope initialisation', function() { 

    beforeEach(module('siteLogic')); 

    describe('sets the addingSite at the inverse', function() { 
     var scope, controller; 


     beforeEach(inject(function($controller, $rootScope) { 
     scope = $rootScope.$new(); 
     //it's on the next line I have the error indication 
     controller = $controller('siteCtrl', { $scope: scope }); 
     })); 

     it('sets true if false', function() { 
     scope.addingSite = false; 
     scope.changeAddingSite(); 
     expect(scope.addingSite).toEqual(true); 
     }); 

     it('sets false if true', function() { 
     $scope.addingSite = true; 
     $scope.changeAddingSite(); 
     expect($scope.addingSite).toEqual(false); 
     }); 
    }); 
    }); 

karma.config.js

module.exports = function(config) { 
    config.set({ 
    basePath: '..', 
    frameworks: ['jasmine'], 
    files: [ 
     'test/dep/angular-1.3.15/angular.js', 
     'test/dep/angular-1.3.15/angular-resource.js', 
     'test/dep/angular-1.3.15/angular-route.js', 
     'test/dep/angular-1.3.15/angular-mocks.js', 
     'lib/map/public/angular/*.js', 
     'test/map/*.js' 
    ], 
    autoWatch: true, 
    browsers: ['PhantomJS'] 
    }); 
}; 

ответ

2

Во второй группе изменения тест $scope в scope

it('sets false if true', function() { 
    $scope.addingSite = true; // there is no $scope 
    $scope.changeAddingSite(); 
    expect($scope.addingSite).toEqual(false); 
    }); 

var siteLogic = angular.module('siteLogic', []); 
 

 
siteLogic.controller('siteCtrl', ['$scope',function($scope) { 
 
    $scope.addingSite=false; 
 

 
    $scope.changeAddingSite = function(){ 
 
    $scope.addingSite= !$scope.addingSite; 
 
    }; 
 
}]); 
 

 
describe('$scope initialisation', function() { 
 

 
    beforeEach(module('siteLogic')); 
 

 
    describe('sets the addingSite at the inverse', function() { 
 
     var scope, controller; 
 

 

 
     beforeEach(inject(function($controller, $rootScope) { 
 
     scope = $rootScope.$new(); 
 
     //it's on the next line I have the error indication 
 
     controller = $controller('siteCtrl', { $scope: scope }); 
 
     })); 
 

 
     it('sets true if false', function() { 
 
     scope.addingSite = false; 
 
     scope.changeAddingSite(); 
 
     expect(scope.addingSite).toEqual(true); 
 
     }); 
 

 
     it('sets false if true', function() { 
 
     scope.addingSite = true; 
 
     scope.changeAddingSite(); 
 
     expect(scope.addingSite).toEqual(false); 
 
     }); 
 
    }); 
 
    });
<link href="http://safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine.css" rel="stylesheet"/> 
 
<script src="http://safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine-2.0.3-concated.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-mocks.js"></script>

+0

Ошибка остаться same.But Я думаю, что вы имеете право. «$» - это код артефакта другого решения. Я попробовал: изменить var scope для var $ scope change scope = $ rootScope. $ New(); to scope = {} но я не понимаю свою ошибку – Valtena

+0

@ Valtena - не стесняйтесь «запускать фрагмент кода» –

+0

Спасибо, это работает на странице html. Я продолжу попытку запуска с узла и кармы, когда у меня будет больше времени. – Valtena