2014-01-28 5 views
0

, если у меня есть функция, которая использует Javascript, что-то вроде этого ... $(this)[0].element.id;Mocking «это» в JavaScript QUnit

updateElement(){ 
$(this)[0].element.id; 
} 

Я использую QUnit, есть ли способ я могу издеваться 'this' Я хотел бы быть в состоянии проверить эту функцию.

+0

У вас есть образец более крупного кода? – Chris

+0

запах кода, сделайте это аргументом updateElement, и он будет проверен. целью тестирования является рефакторинг плохого кода: http://blog.testdouble.com/posts/2014-01-25-the-failures-of-intro-to-tdd.html – mpm

ответ

1

Я предполагаю, что this относится к некоторому объекту jQuery. Вы можете создать соответствующие объекты с помощью функции JQuery, а затем использовать bind() прикрепить объект как this к вашей фактической функции:

// prepare the DOM objects 
var $elem = $('...'); 

// prepare a bound function 
var boundFct = updateElement.bind($elem); 

// execute your function 
boundFct(); 
2

С функциями apply или call из Function объекта, вы можете изменить значение this при вызове функции:

var mock = ... 

updateElement.call(mock); 

this будет относиться к mock внутри updateElement вызова выше.

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