Жасмин не может& #39;не отслеживать обработчик событий?

Попытка проверить, что обработчик событий вызывается для элемента, по которому щелкнули, с помощью Jasmine. Иметь объект «Pad», который содержит элемент DOM «PadElement», по которому щелкают. Обработчик событий — это метод объекта Pad:

GRAPH.Pad = function(graphDiv, graph) {
    this.graph = graph;

    this.clickHandler = function(e) {
        console.log('padElement clickHandler called');
        //this.graph.createVertex(e.clientX, e.clientY);
    };
    this.padElement = GRAPH.padElement(graphDiv, this.clickHandler);
}

GRAPH.padElement = function(graphDiv, clickHandler) {
    //Initialize pad
    var NS="http://www.w3.org/2000/svg";
    var pad=document.createElementNS(NS,"svg");
    pad.setAttributeNS(null, 'id', 'pad');
    graphDiv.appendChild(pad);
    pad.addEventListener('click', clickHandler)
    return pad;
}

Тест Jasmine:

var testDiv = document.createElement('div');
var testGraph = new GRAPH.Graph(testDiv);
var testPad = new GRAPH.Pad(testDiv, testGraph);

  it('has its clickHandler function called when its padElement is clicked',
    function() {
      spyOn(testPad, "clickHandler");
      simulateClick(testPad.padElement);
      //testPad.clickHandler();
      expect(testPad.clickHandler).toHaveBeenCalled();
  });

Однако тест НЕ ПРОШЕЛ. Обратите внимание, что прослушиватель событий вызывается (console.log успешно пишется щелчком мыши и с помощью simulatorClick ), И если я просто вызову testPad.clickHandler ()напрямую, шпион Жасмин сможет его подобрать. Но что происходит во время реального теста? Переносится ли вызов обработчика событий на другой объект во время выполнения? Как правильно это сделать?

10
задан 30 April 2012 в 03:38
поделиться