У меня есть трудное понимание модульных тестов в angularJs. Я только что начал с модульных тестов, и синтаксис мне кажется странным. Ниже приведен код для тестирования controller:Контроллеры модульных испытаний в угловыхJS
describe('PhoneCat controllers', function() {
describe('PhoneListCtrl', function(){
beforeEach(module('phonecatApp'));
it('should create "phones" model with 3 phones',
inject(function($controller) {
var scope = {},
ctrl = $controller('PhoneListCtrl', {$scope:scope});
expect(scope.phones.length).toBe(3);
}));
});
});
Что я могу понять из этого синтаксиса, что перед каждым это блок phonecatApp инициализирован и что $ контроллер сервис используется для получения экземпляра контроллера PhoneListCtrl ,
Однако я не могу понять область действия здесь. Может кто-то уточнить, что стоит за тем, чтобы получить объем контроллера на этой линии.
ctrl = $controller('PhoneListCtrl', {$scope:scope});
var scope = {} определяется, и мы передаем область как параметр в PhoneListCtrl. Таким образом, он станет локальной переменной для этого контроллера. Как он указывает на область var = {} снаружи. Я знаю, что здесь происходит что-то еще, и я думаю совершенно неправильно. Пожалуйста, направляйте. – roshan
Ваш контроллер определяется как 'app.controller ('PhoneListCtrl', function ($ scope) {...})'. Этот аргумент $ scope вводится угловым. В вашем тесте вместо того, чтобы создавать область и вводить ее, угловой принимает тот, который вы передаете в качестве аргумента, и вводит его. –
Но область действия будет локальной для этой функции, как она изменяет область var = {}, определенную снаружи. – roshan