2015-12-14 4 views
3

У меня есть две функции funcA() и funcB(), я пишу блок-тесты для $ scope.funcA().Как насмехаться или вызвать фокусную функцию javascript?

Ниже приводится определение:

function funcB(){ 
//statements 
console.log("At function B"); 
}; 

$scope.funcA() = function(){ 
funcB(); 
console.log("At function A"); 
}; 

Прямо сейчас, пока я проверяю мой $ scope.funcA() на самом деле зовет меня funcB(). Как остановить это и сделать фальшивый звонок или высмеивать funcB(); в Жасмине.

+0

Вы не можете. Функция должна быть доступна, чтобы вы могли следить за ней. Как бы то ни было, ваш 'funcB' доступен только изнутри контроллера. См. [Здесь] (http://stackoverflow.com/a/22921570/2759075) – yarons

+0

@yarons Привет, что это правильный способ сделать это, должен ли я сделать funcB() как $ scope.funcB() {}, так что я могу проверить его? –

+0

Я не знаю другого способа сделать это – yarons

ответ

0

вы можете использовать spyOn() и andCallFake() для его достижения. см. Один из моих более ранних ответов здесь. Does Jasmine's spyOn() allow the spied on function to be executed?

надеюсь, что это поможет.

EDIT

для новых версий жасмин, то snytax будет

spyOn($scope, 'funcB').and.callFake(function() { 
     return 'something'; 
}); 

для полного списка, см - http://jasmine.github.io/2.0/introduction.html

+0

Привет, вы могли бы показать мне демо на моем примере в моем вопросе, я уже много пробовал, я буду рад, если вы сможете показать мне это с моим примером. –

+0

вы должны создать звенеть/jsfiddle – Rabi

+0

см funcB только основные функции Javascript т.е. функция funcB() {// заявления } _Now то, что я сделал это this_ вар mockfuncB = jasmine.createSpy ("funcB") ; spyOn (mockfuncB, 'funcB'). And.callFake (function() { }); что я хочу сделать, это сделать фальшивый звонок funcB() из funcA(). _but показывает, что метод funcB() не существует_ –

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