Как проверить себя. функции контроллера angularjs в жасмине
У меня есть код ниже в моем контроллере
контроллер:
self.DoSomething = function () {
self.x="hai";
self.y = function (id, data) {
self.x="hello";
}
}
$scope.Call=function(){
self.DoSomething();
}
Нет другой определенной функции self.y, кроме заданного кода.
Всякий раз, когда я проверяю функцию Call через Жасмин, вызывая ее. Мое покрытие кода не отображается внутри функции self.y. т.е. self.x="hello" не вызывается. Пожалуйста, предложите мне, как это сделать.
Заранее спасибо.
2 ответа
self.y
является только собственностью self
, Единственный способ позвонить, это сначала определить его, позвонив $scope.call()
затем позвоните self.y
$scope.call();
self.y();
Если вы не разоблачаете self
от контроллера. Код в self.y
не проверяется Если вы хотите, чтобы он выполнялся при вызове doSomething, вы должны сделать это явно.
self.DoSomething = function () {
self.x="hai";
self.y = function (id, data) {
self.x="hello";
}
self.y();
}
Но почему ты пишешь свой код так?
self.y
не выполняется, когда вы звоните $scope.Call
, Это только определяется. Вы не получите покрытие для функции, если эта функция не выполнена вашим тестом. Вам нужно будет выполнить $scope.Call
а затем выполнить self.y
Изменить: Пример
Где-то в ваших тестах Жасмин вы должны иметь:
describe('y function', function () {
it('should set self.x to "hello"', function () {
$scope.Call()
controllerName.y()
expect(controllerName.x).toEqual("hello")
})
})