2016-11-16 2 views
1
describe("App defination", function() { 
beforeEach(module('app')); 
    var MainCtrl, scope; 

describe("ModuleTwo", function() { 

    beforeEach(inject(function($controller,$rootScope){ 
      scope= $rootScope.$new(); 
      MainCtrl =$controller('TestCtrl',{ $scope: scope}); 
    })); 
     it("check scope", function() { 
       expect(scope).toBeDefined(); 
     }); 
    }); 


}); 

Я не могу получить доступ к области действия в этом блоке. Это дает мне ошибку, например «Ожидаемое неопределенное значение». Когда я переименовываю TestCtrl в анимиру, он вообще не влияет на жасмин. Почему это происходит?Как ввести контроллер в карму?

ответ

0

Это работает для меня. Проверьте, соответствует ли ваш модуль app или App.

angular.module('App', []); 
 

 
angular.module('App').controller('TestCtrl', function($scope) { 
 
}); 
 

 
describe("App", function() { 
 
    beforeEach(module('App')); 
 
    
 
    var MainCtrl, scope; 
 
    describe("TestCtrl", function() { 
 
    beforeEach(inject(function($controller, $rootScope){ 
 
     scope = $rootScope.$new(); 
 
     MainCtrl = $controller('TestCtrl', { $scope: scope }); 
 
    })); 
 
    it("should have a scope", function() { 
 
     expect(scope).toBeDefined(); 
 
    }); 
 
    }); 
 
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine.css"> 
 

 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine-html.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/boot.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular-mocks.js"></script>

0

Есть две вещи, которые нужно сделать:

1) Добавить ссылку на контроллер и как угловой/угловой насмешка в karma.conf.js:

files: [ 
     './node_modules/angular/angular.js',        // angular 
     './node_modules/angular-mocks/angular-mocks.js',     // angular-mocks 
     './app/views/js/controllers/sugestionController.js', // <---- your controller name 
     './test/**/*.js' 
    ], 

2) В тестовом файле вы должны ввести свой модуль и ваш контроллер:

beforeEach(angular.mock.module('socialMeal')); //<---- module injection 

var $controller; 
var sugestionController; 

beforeEach(angular.mock.inject(function(_$controller_){ //<---- controller injection 
    $controller = _$controller_; 
    sugestionController = $controller('SugestionController', {}); 
}));