Я новичок в angularjs и модульном тестировании. Я хочу знать, как я могу определить свою переменную области видимости в тестовых примерах. У меня следующий контроллер:
(function () {
app.controller('regionsController', regionsController);
regionsController.$inject = [
'$scope',
'regions',
'countryList',
'statesList',
'regionsService',
'$timeout'
]
function regionsController(
$scope,
regions,
countryList,
statesList,
regionsService,
$timeout
) {
$scope.newRegions = [];
$scope.regions = regions;
$scope.selected = '';
$scope.emptyNewRegions = function () {
$scope.newRegions = [];
//other stuff
}
}
}())
И вот что я делаю в тестовом примере:
describe('regionsController', function () {
beforeEach(module('regionsApp'));
describe('regionsController', function () {
var ctrl, scope;
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
ctrl = $controller('regionsController', { $scope:scope });
}));
describe('$scope.emptyNewRegions', function () {
it('Testing emptyNewRegions function', function () {
expect(ctrl).toBeDefined();
scope.emptyNewRegions();
expect(scope.newRegions).toBeDefined();
expect(scope.newRegions.length).toBe(0);
});
});
});
});
Я получаю эту ошибку:
<Jasmine>
Expected undefined to be defined.
<Jasmine>
unit/regionsTest.js:13:41
<Jasmine>
TypeError: undefined is not an object (evaluating 'scope.emptyNewRegions') in unit/regionsTest.js (line 14)
unit/regionsTest.js:14:22
<Jasmine>
PhantomJS 2.1.1 (Windows 8): Executed 1 of 1 (1 FAILED) (0.006 secs / 0.005 secs)
TOTAL: 1 FAILED, 0 SUCCESS
Пожалуйста, дайте мне знать, как я могу это сделать. Заранее спасибо.