如何为Rspec功能创建页面对象类

时间:2014-09-25 14:35:00

标签: ruby-on-rails ruby rspec

我一直在尝试使用Page Objects重构一些rspec功能,但没有成功,但我很难用它。

我不是经验丰富的RoR开发人员。可能这是一个基本错误。

我有一个像这样的规范功能:

require 'capybara/rspec'
feature 'Acessing the dashboard' do

    scenario 'User see the dashboard after login' do
      sign_in 'teste','123' 
      expect(page).to have_css 'h1', text: 'Dashboard'
    end

    def sign_in(login, password)
      visit '/'
      fill_in 'login', :with => login
      fill_in 'password', :with => password
      click_button 'Autenticar'
    end 
end

但是,我想通过像这样的登录页面对象与另一个功能共享我的sign_in方法:

class LoginPage
   include Capybara::DSL

   def sign_in(login, password)
      visit '/'
      fill_in 'login', :with => login
      fill_in 'password', :with => password
      click_button 'Authenticate'
   end
end

所以,我更改了我的功能:

feature 'Acessing the dashboard' do

    let(:login_page) { LoginPage.new }

    scenario 'User see the dashboard after login' do
      login_page.sign_in 'teste','123'
      expect(page).to have_css 'h1', text: 'Dashboard'
    end

end

但是我收到以下错误:

 Failure/Error: let(:login_page) { LoginPage.new }
 NameError: uninitialized constant LoginPage

我真的不知道该怎么做。 我在/spec/support/LoginPage.rb中创建了LoginPage类。这是对的吗?我应该把这个班级放在其他路上吗?

有人可以帮我处理吗? 非常感谢。

1 个答案:

答案 0 :(得分:2)

您必须在spec_helper.rb文件

中要求支持文件夹文件
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }