Capybara webkit不会从有角度传递params

我正在尝试将selenium测试套件移植到capybara-webkit。 Rails应用程序在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 

会在selenium中没有问题,但是使用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-angulargem,但它没有帮助。 我也尝试用capybara保存页面,没有什么看起来不合适,有没有办法访问在此测试中生成的webkit内部的PATCH请求? 我也遇到过与poltergeist类似的错误。

有人用angular + rails设置无头rspec测试吗? 有关如何调试数据未从客户端发送的任何提示?

在没有看到所有代码的情况下,感觉这可能是与capybara-webkit中的已知问题相关联的问题 , gem无法将实体主体传递给服务器。

我怀疑更新请求是作为PATCH请求发送的(这是合适的),但gem的问题导致测试失败。

解决您的问题的方法是将请求的方法更改为PUTPOST ,上面链接的问题显示了一些选项。 您将能够通过测试,但由您自行决定更改请求类型是否值得让您的测试通过。

注意:在实践中,如果你实际上没有使用PATCH可能无关紧要,因为你可以在技术上交替使用( 某些 )其他http方法 – 但要小心,因为有理由在给定的情况下使用特定的http方法。 有关详细信息,请参阅几年前的rubyonrails.orgpost。

Interesting Posts