Webkit Capybara не передает параметры из angular

Я пытаюсь перенести набор тестов селена на capybara-webkit. Приложение Rails имеет приложение angular, встроенное в представления rails, и ведет себя не так, как ожидалось, с webkit.

Такой тест:

требуется 'spec_helper'

feature 'Editing company profiles' do
  before do
    @user = create(:employee)
    @company = Company.find(@user.employer.id)
    sign_in_as! @user
  end

  scenario 'successfully', js: true do
    click_link 'Dashboard'
    click_link @company.name
    click_button 'Edit'
    fill_in 'company_name', with: 'new name'
    click_button 'Save'

    expect(page).to have_content "Your company profile has been updated!"
  end
end

Пройдет без проблем в селене, но с webkit я получаю сообщение об ошибке

 Failure/Error: Unable to find matching line from backtrace
 ActionController::ParameterMissing:
   param is missing or the value is empty: company
 # ./app/controllers/api/v1/companies_controller.rb:23:in `company_params'
 # ./app/controllers/api/v1/companies_controller.rb:10:in `update'

Трассировка отсутствует, возможно, из-за того, что она из угловой земли, но ошибка сообщает, что от клиента не поступают параметры. Я пробовал гем capybara-angular, но это не помогло. Я также попытался сохранить страницу с капибарой, и там ничего не выглядит неуместным, есть ли какие-либо способы получить доступ к запросу PATCH внутри webkit, который создается в этом тесте? Я также получил подобные ошибки с poltergeist.

Кто-нибудь настраивал безголовое тестирование rspec с помощью angular + rails? Любые советы о том, как отладить, почему данные не отправляются от клиента?


person user2936314    schedule 06.01.2015    source источник
comment
У меня есть некоторый опыт работы с Capybara и WebKit в приложении rails-angular. Некоторые тесты не работают без селена, но я готов взглянуть. Можете ли вы опубликовать шаблон AngularJS и контроллер, отображающий страницу в этом тесте?   -  person eabraham    schedule 09.01.2015


Ответы (1)


Не видя весь ваш код, может показаться, что проблема связана с известной проблемой в гем capybara-webkit не может передать тела сущностей на сервер.

Я подозреваю, что запрос на обновление отправляется как запрос PATCH (что уместно), но проблема с драгоценным камнем приводит к сбою ваших тестов.

Обходной путь к вашей проблеме — изменить метод запроса на PUT или POST, проблема, указанная выше, показывает некоторые варианты. Вы сможете пройти свой тест, но вам решать, стоит ли изменение типа запроса того, чтобы ваш тест прошел.

Примечание. На практике может не иметь значения, если вы на самом деле не используете PATCH, поскольку технически вы могли бы использовать (некоторые из) другие методы http взаимозаменяемо, но будьте осторожны. поскольку есть причины использовать конкретный метод http для данной ситуации. См. этот rubyonrails.org сообщение, сделанное несколько лет назад, чтобы узнать некоторые подробности.

person Ecnalyr    schedule 09.01.2015
comment
это точная проблема, моя служба angular использовала patch, переключилась на put и правильно передает параметры, спасибо. присудит награду через 5 часов, когда это позволит мне - person user2936314; 09.01.2015
comment
У меня такая же проблема с фантомами и полтергейстом, использующими Capybara. Та же проблема с фантомами и полтергейстом? - person Zia Qamar; 05.12.2017