在何处/如何为capybara集成测试包含辅助方法

时间:2011-11-19 07:19:12

标签: ruby-on-rails ruby rspec capybara

我正在使用capybara进行集成/验收测试。它们位于/spec/requests/文件夹中。现在我在验收测试中使用了一些辅助方法。一个例子是register_user看起来像这样

def register_user(user)
  visit home_page
  fill_in 'user_name', :with => user.username
  fill_in 'password', :with => user.password
  click_button 'sign_up_button'
end

我想在几种不同的验收测试中使用此方法(它们位于不同的文件中)。包含这个的最佳方法是什么?我已经尝试将其放入spec/support/,但它并没有为我工作。花了一些时间后,我意识到我甚至不知道这是不是一个很好的方式,所以我想我会在这里问。

注意:我使用的是rails 3,spork和rspec。

3 个答案:

答案 0 :(得分:38)

将您的助手放到spec / support文件夹中并执行以下操作:

规格/支持/:

module YourHelper
  def register_user(user)
    visit home_page
    fill_in 'user_name', :with => user.username
    fill_in 'password', :with => user.password
    click_button 'sign_up_button'
  end
end

RSpec.configure do |config|
  config.include YourHelper, :type => :request
end

答案 1 :(得分:16)

我使用@VasiliyErmolovich给出的解决方案,但我更改了类型以使其工作:

config.include YourHelper, :type => :feature

答案 2 :(得分:0)

红宝石的显式方式

使用include

# spec/support/your_helper.rb
class YourHelper
  def register_user(user)
    visit home_page
    fill_in 'user_name', :with => user.username
    fill_in 'password', :with => user.password
    click_button 'sign_up_button'
  end
end

describe MyRegistration do
  include YourHelper

  it 'registers an user' do
    expect(register_user(user)).to be_truthy
  end
end