2015-09-14 3 views
1

Учитывая следующую структуру JavaScript:Можно ли тестировать эту структуру javascript?

addClickEvent: function() { 
    element.addEventListener('click', function() { 
     self.a(); 
     self.b(); 
    }); 
}, 

Можно ли утверждать, что a() и b() были названы без рефакторинга из анонимной функции или редактирования его содержимого?

+0

ли 'self' определенный где-то еще, или это' window.self', что в большинстве браузеров? –

ответ

0

Предполагая, что я в вашем коде является собственностью window.self.

Вы могли бы сделать что-то вроде этого:

function element_onclick_callsAandB() { 
    // Arrange 
    var aCalled = false; 
    var bCalled = false; 
    var element = ...; 

    var origA = self.a; 
    var origB = self.b; 

    self.a = function() { 
     aCalled = true; 
     origA(); 
    }; 
    self.b = function() { 
     bCalled = true; 
     origB(); 
    }; 

    try { 
     // Act 
     element.click(); 

     // Assert 
     assertTrue(aCalled); 
     assertTrue(bCalled); 
    } 
    finally { 
     self.a = origA; 
     self.b = origB; 
    } 
} 
+0

'self'' '' '' 'на том же уровне, что' addClickEvent() ' –

+0

Вам нужно как-то получить ссылку на себя, чтобы иметь возможность шпионить за ней. Можете ли вы получить это в своем тесте? –

+0

В тесте у меня есть экземпляр объекта, поэтому 'object.addClickEvent()' работает, однако, я не вижу a или b. Я пытаюсь сделать так, чтобы реорганизовать анонимную функцию в свою, называемой функцией, например 'responseToClick()'. –

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