2012-01-15 3 views
12

Я пишу спецификации для разных тестовых примеров для Jasmine и QUnit, чтобы сравнить их, и они выглядели одинаково, прежде чем мне нужно было написать тест, чтобы проверить, привязано ли событие к элементу.Есть ли аналог spyOn в QUnit?

событий связывания выглядит как

$('.page').live('click', function() { page_clicked($(this)) }); 

page_clicked частный метод, но он требует открытого метода другого модуля.

Вот Жасмин спецификации:

it('should bind events to pages', function() { 
    spyOn(search, 'get_results'); 

    $('.page:eq(0)').trigger('click'); 

    expect(search.get_results).toHaveBeenCalled(); 
}); 

Этот тест работает. Теперь я пытаюсь написать тот же тест для QUnit и не могу найти ничего похожего на spyOn. Как написать этот тест для QUnit?

ответ

9

Его причина QUnit не имеет шпионов или издевок. Но вы можете использовать фальшивый фреймворк Sinon.JS. Ваш тест должен выглядеть следующим образом, используя sinon spy:

var spy = sinon.spy(search, 'get_results'); 
sinon.assert.calledOnce(spy); 
+0

Пробовал копировать/вставить код, но 'Assert (spy.calledOnce)' 'броски утверждают не defined' и' sinon.assert.called (шпион) 'бросает 'Ожидаемые get_results были вызваны хотя бы один раз, но никогда не назывались' –

+0

Хорошо, это было скопировано/вставлено из sinon doku, я исправил его. –

+0

Все еще не работает. 'ожидаемые get_results будут называться один раз, но были вызваны 0 раз. Я поставил предупреждение после вызова 'get_results' в функции' page_clicked' и предупреждения, тест Jasmine проходит, но QUnit + SinonJS этого не делает. –

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