2015-12-03 8 views
0

Я новичок в тестировании жасмина в реакции, и это сводит меня с ума.Жасмин React Spy не называется?

Я пытаюсь протестировать простую кнопку, нажав ниже. Но шпион не работает.

it('fires the clearTags handler', function() { 

    var handler = jasmine.createSpy(); 

    var element = ReactTest.renderIntoDocument(
     React.createElement(SomeComponent)); 

    spyOn(element,'clearTags') 

    var clearTagsLink = ReactTest.findRenderedDOMComponentWithClass(element, 'clear-tags-link'); 

    ReactTest.Simulate.click(clearTagsLink); 

    expect(handler).toHaveBeenCalled(); 
}); 

Я получаю сообщение об ошибке Ожидаемый шпион неизвестен, который был вызван. Есть идеи? Я попытался использовать .and.callThrough(), но это тоже не сработало.

ответ

1

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

Если я прав, я думаю, вы бы хотели настроить своего шпиона так;

spyOn(React, 'createElement'); 
expect(React.createElement).toHaveBeenCalled(); 

Для более надежного теста, который вы, вероятно, хотите использовать жасмин toHaveBeenCalledWith («проходящий в параметрах») вы ожидали бы назвать с.

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