2013-06-27 3 views
1

Я использую $.proxy(this, 'methodName') для использования методов моего объекта как обработчиков событий для событий DOM.Хороший подход к использованию тестовых шпионов с привязкой динамических функций

Когда дело доходит до тестирования, я хотел бы использовать spyOn Jasmine для контроля того, срабатывают ли обратные вызовы. Однако, поскольку слушатель прикреплен в конструкторе моего объекта к моменту, когда я досматриваю метод, это слишком поздно, а функция raw, unspied уже используется $.proxy.

Что такое хорошие подходы к решению этого вопроса? Одна вещь, которую я рассмотрел, напрямую следит за методами прототипа, но я беспокоюсь о том, какое влияние это может оказать на каждый тест независимо от других. Другим было бы изменить то, как я присоединяю слушателей к моему коду, но это похоже на то, чтобы выкинуть ребенка с водой для ванны.

ответ

0

Вы можете следить за прототипом объекта до начала теста. Таким образом, это не повлияет на ваши другие тесты.

var function A { 
    $.proxy(this, 'methodName'); 
} 

a.prototype.methodName = function() { 
    console.log('test'); 
} 

describe('…', function() { 
    var a; 
    before(function() { 
    jasmine.spyOn(a.prototype, 'methodName'); 
    a = new A(); 
    }); 

    it('should…', function() { 

    }); 

});