0

У меня есть ниже код внутри моего контроллераКак проверить себя. angularjs функция контроллера в жасмине

контроллер:

self.DoSomething = function() { 
    self.x="hai"; 
    self.y = function (id, data) { 
     self.x="hello"; 
    } 
} 

$scope.Call=function(){ 
    self.DoSomething(); 
} 

Там нет другой функции self.y определен кроме данного кода.

Всякий раз, когда я проверяю функцию вызова через жасмин, позвонив ему. Мое покрытие кода не отображается внутри функции self.y. то есть self.x = "hello" не вызывается. Пожалуйста, предложите мне способ, как это сделать.

Заранее спасибо.

ответ

0

self.y не выполняется, когда вы звоните $scope.Call. Он определяется только. Вы не получаете покрытие для функции, если эта функция не выполнена по вашему тесту. Вы будете нуждаться, чтобы выполнить $scope.Call, а затем выполнить self.y

Edit: Пример

Где-то в вашем жасмин тесты вам нужно иметь:

describe('y function', function() { 
    it('should set self.x to "hello"', function() { 
     $scope.Call() 
     controllerName.y() 
     expect(controllerName.x).toEqual("hello") 
    }) 
}) 
+0

Вы имеете в виду, что мы не можем назвать это каким-либо образом? Можете ли вы уточнить свой ответ с помощью некоторого кода, как вызвать $ scope.y? – aditya

+0

Извините, значит self.y. И я имею в виду, что ваша функция self.Call не вызывает 'self.y'. Вам нужно позвонить 'self.y', чтобы получить покрытие для этого в ваших тестах. Добавлен пример выше. – jlogan

+0

Если это все еще запутывает, тогда отправьте тестовый файл. – jlogan

0

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(); 
} 

Но почему вы пишете свой код следующим образом?

+0

Код был написан другим составом, и я не знаю точное использование, и такого вызова нет, как self.y(); внутри кода. Я сомневаюсь, что они называют это из какой-то директивы !. Можно ли назвать это явно где-то еще? В некоторых местах они просто написали var y = function (id, data) {...}. Я также не могу их протестировать. – aditya

+0

Если 'self.y()' вызывается где-то в этом контроллере (или, возможно, из другого места, но это плохой дизайн), то этот код никогда не выполняется в приложении и не нуждается в тестировании! – Amygdaloideum

 Смежные вопросы

  • Нет связанных вопросов^_^