use*_*314 4 ruby-on-rails capybara-webkit angularjs
我正在尝试将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
Run Code Online (Sandbox Code Playgroud)
会在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'
Run Code Online (Sandbox Code Playgroud)
缺少痕迹,可能是因为它来自有角度的土地,但错误是报告没有来自客户端的参数.我已经尝试了capybara-angular宝石,但它没有帮助.我也尝试用capybara保存页面,没有什么看起来不合适,有没有办法访问PATCHwebkit中的请求,这是在这个测试中生成的?我也遇到了类似的错误poltergeist.
有人用angular + rails设置无头rspec测试吗?有关如何调试数据未从客户端发送的任何提示?
在没有看到所有代码的情况下,感觉这可能是与capybara-webkit中的已知问题相关联的问题,gem无法将实体主体传递给服务器.
我怀疑更新请求是作为PATCH请求发送的(这是合适的),但gem的问题导致测试失败.
解决问题的方法是将请求的方法更改为,PUT或者POST上面链接的问题显示一些选项.您将能够通过测试,但由您自行决定更改请求类型是否值得让您的测试通过.
注意:在实践中,如果您实际上没有使用它可能无关紧要PATCH,因为您可以在技术上交替使用(某些)其他http方法 - 但要小心,因为有理由在给定情况下使用特定的http方法.有关详细信息,请参阅几年前的这篇rubyonrails.org帖子.