2016-08-08 4 views
1

У меня есть компонент реагирования, который, когда я нажимаю значок, меняет состояние, а затем я помещаю в него вместо значка.Нажмите, чтобы не работать с компонентом реакции + capypara

Когда я пытаюсь имитировать это в своем тесте, используя capybara, компонент не изменяется.

Есть ли вероятность, что щелчок не будет работать на компоненте из-за capybara? Или просто не работает, потому что это реактивный компонент?

Компонент:

render() { 
    return (
    <div> 
     { this.state.editable ? this.renderEditableComponent() : this.renderNotEditableComponent() } 
    </div> 
) } 

    renderEditableComponent() { 
    return (
    <EditableDeliverLimit 
     value={ this.state.value } 
     handleClick={ this.handleClick.bind(this) } /> 
) } 

    renderNotEditableComponent() { 
    return (
     <NotEditableDeliverLimit 
     value={ this.state.value } 
     handleClick={ this.handleClick.bind(this) } /> 
) } 

Тест:

Then "should successfuly change deliver limit" do 
    wait_for_selector_appearance("##{ad_table_row_id(@ad)} .ad-table-row-deliver-limit span") 
    find("##{ad_table_row_id(@ad)} .ad-table-row-deliver-limit span").click 
    wait_for_selector_disappearance("##{ad_table_row_id(@ad)} .ad-table-row-deliver-limit span") 
end 
+0

Работает ли код вне capybara? Можете ли вы поделиться своим кодом, чтобы мы могли решить это как проблему? – Justin

+0

Да! Когда я тестирую вне теста, все работает нормально. Я отредактирую свой вопрос, чтобы поставить код. – Marina

+0

Какой драйвер вы используете с Capybara? –

ответ

0

Версия PhantomJS и Qt WebKit вы используете устарели и не поддерживают Function.prototype.bind, которая требуется React. Обновление до PhantomJS 2.1.1+ и перестройка capybara-WebKit с Qt 5.5.1

+0

После установки qt5 был удален qtWebkit. Что я могу сделать? – Marina

+0

@Marina вы установили 5.6 not 5.5.1 –

+0

Я установил qt55, а затем восстановил capybara-webkit и все еще не работал – Marina

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