ruby-on-rails - Capybara webkit 不会从 angular 传递参数

标签 ruby-on-rails angularjs capybara-webkit

我正在尝试将 selenium 测试套件移植到 capybara-webkit。 Rails 应用程序在 Rails View 中嵌入了一个 Angular 应用程序,但其行为与 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'

跟踪丢失,可能是因为它来自 angular land,但错误报告说没有来自客户端的参数。我试过 capybara-angular gem,但它没有帮助。我也试过用 capybara 保存页面,那里没有什么不合适的地方,有什么方法可以访问PATCH在此测试中生成的 webkit 内部请求?我也遇到过类似的错误 poltergeist .

有没有人使用 angular + rails 设置 headless rspec 测试?关于如何调试为什么没有从客户端发送数据的任何提示?

最佳答案

没有看到您的所有代码,感觉这可能是与 known issue 相关的问题。在 capybara-webkit gem无法将实体主体传递给服务器。

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

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

注:实际上,如果您不实际使用 PATCH 可能无关紧要。 ,因为您可以在技术上交替使用(一些)其他 http 方法 - 但请谨慎使用,因为有理由在给定情况下使用特定的 http 方法。看到这个 rubyonrails.org几年前的帖子以了解一些细节。

关于ruby-on-rails - Capybara webkit 不会从 angular 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808826/

相关文章:

javascript - 将 IEnumerable<DayOfWeek> 以哪种格式序列化到 javascript 客户端

qt - Qt 5.4.1 在 OSX 上使用哪个 WebKit 版本?

javascript - 错误 : [$compile:multidir] while binding md-sidenav with controller (angular material)

angularjs - Angular 突出显示/选择 <div> 元素内的所有内容 Angular

ruby-on-rails - 为什么RSpec/Capybara不显示发生错误的位置

ruby-on-rails - headless gem : webkit_server: cannot connect to X server

ruby-on-rails - Factorybot - 如何设置嵌套属性

ruby-on-rails - 帮助为静态页面创建路由和 Controller

mysql - 什么时候应该使用连接表与 Ruby on Rails 数据库中的表中的 id

ruby-on-rails - 下一个付款日期另存为日期时间栏