Я пытаюсь начать работу с angular.js, но не могу понять, как вводить простую переменную в мой контроллер перед тестированием.Как вставить переменную в контроллер
Это мой контроллер:
angular.module("app").controller("SimpleController", SimpleController);
function SimpleController() {
var vm = this;
vm.myVar = 1;
vm.getMyVar = function() {
return vm.myVar;
};
}
Мой тест выглядит следующим образом:
describe("SimpleController", function() {
var vm;
beforeEach(module('app'));
beforeEach(inject(function($controller, $rootScope) {
vm = $controller('SimpleController', {
$scope: $rootScope.$new(),
myVar: 2
});
}));
it('myVar should be 2 not 1', function() {
expect(vm.getMyVar()).toEqual(2);
});
});
Я много поиск Google, но это действительно сбивает с толку, потому что многие люди используют $scope
в контроллере а не this
как у меня. Но я думаю, что впрыскивание переменных должно работать с this
тоже?
Да, я знаю поведение '$ scope'. На самом деле кажется, что вы можете использовать '$ scope' и' this' параллельно (см. Http://stackoverflow.com/questions/16619740/angular-should-i-use-this-or-scope). Допустим, я использую '$ scope' и структурирую контроллер, как вы предложили: как я могу макетировать somevar в моей тестовой папке, чтобы иметь другое значение? – Jonny
@Jonny var controller = $ controller ('SimpleController', {$ scope: $ scope}); $ scope.myVar = 'something' – Anonymous