Как проверить себя. функции контроллера 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")
   })   
})
Другие вопросы по тегам