2011-01-19 8 views
1

У меня есть следующие методы. Я хотел бы что-то издеваться над чем-то, чтобы я мог проверить, вызвано ли имя pete(). Не знаете, как это сделать, когда я использую закрытие. Есть идеи ?jasmine - закрытие тестирования JavaScript

bla = (function(){ 
    var a = 0; 
    jim = function(){ 
     if(a==1){ 
      pete(); 
     } 
    }, 
    pete = function(){ 
     return 1; 
    } 

    var publicInterface = { 
     "publicjim": jim 
    } 
    return publicInterface; 
})(); 
+0

исправил мой пример, чтобы использовать правильный синтаксис .. извините за опечатку inital. – wmitchell

+0

(Я чувствую себя как schmo - я просто ответил на каком-то участке соскабливания) Вы действительно хотите проверить, что птенцы вызывались, когда вы звоните в jim? Или вы хотите проверить, что, когда вы вызываете jim, что-то происходит (что триггеры)? – user588542

ответ

3

В вашей самоисполняющейся анонимной функции вы используете свойства объекта.

jim и pete должны быть локальными переменными, чтобы «скрыть» их посредством закрытия.

var bla = (function(){ 
    var a = 1; 
    var jim = function() { 
     if (a == 1) { 
     pete(); 
     } 
    }; 
    var pete = function() { 
     return 1; 
    }; 

    return { 
     "publicjim": jim 
    }; 
})(); 
+0

вы сделали действительную точку. Я случайно использовал синтаксис свойства «:» в моем дезинфицированном примере. Я обновил свой примерный код, чтобы уточнить. В моем реальном коде я использую «=», я все еще изучаю js, поэтому иногда мой синтаксис немного шаткий. Моя проблема остается - как я могу в рамках модульных тестов использовать Jasmine, могу ли я убедиться, что pete(); был вызван или это невозможно? – wmitchell

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