集成测试:最佳,Capybara和RSpec

Fei*_*Fei 1 rspec ruby-on-rails capybara best-in-place

如何best_in_place使用Capybara和Rspec 测试这样的字段?我是新手.

<span 
   class='best_in_place' 
   id='best_in_place_user_233952_name' 
   data-url='/users/233952' 
   data-object='user' 
   data-attribute='name' 
   data-nil='User Name' 
   data-type='textarea' 
   data-original-content=''>
</span> 
Run Code Online (Sandbox Code Playgroud)

我想用名字填写最好的文本区域.

Fei*_*Fei 5

这就是我解决它的方式:

为了使用最好的测试助手,我必须添加config.include BestInPlace::TestHelpers到我的spec_helper.rb中:

RSpec.configure do |config|  
  config.include BestInPlace::TestHelpers 
end
Run Code Online (Sandbox Code Playgroud)

在我的测试中我做到了这一点:

require 'spec_helper'

feature 'create a new user' do 
    scenario "create user Alice", :js => true do
        visit '/some_path'

        click_on 'New User'
        expect(page).to have_content 'User Name' # [1]

        user = User.order(:created_at).last
        bip_area user, :name, 'Alice'

        expect(page).to have_content 'Alice'
    end  
end
Run Code Online (Sandbox Code Playgroud)

[1]很重要,因为它会等到JS加载字段!

  • 感谢您的代码示例.对于阅读本文的其他人,如果你还没有这样做,你可能还需要在`spec_helper.rb`文件中添加`require'best_in_place'`和`require'best_in_place/test_helpers'` (2认同)