0
我已經開始了Rspec,Capybara的簡單例子。我遇到過幾個問題。這個問題可能是因爲我有cucumber
和page_object gem
的經驗,但在這裏我使用的是capybara
和Site_prism gem
。Rspec,水豚入門問題
我曾嘗試: my_example_spec.rb require_relative '支持/ spec_helper' require_relative '頁/ login_page'
describe 'My behaviour' do
it 'should do something'do
@login_page = LoginPage.new
@login_page.load
@login_page.login('autouser','password')
end
end
和login_page.rb
class LoginPage < SitePrism::Page
set_url "/login"
element :username, "input[id='username']"
element :password, "input[id='password']"
element :submit, "input[id='submit']"
def login(username,password)
@login_page.username.set username
@login_page.password.set password
@login_page.submit.click
end
end
問題是:
當我運行
my_example_spec.rb
提示錯誤Testing started at ... Run options: include {:full_description=>/My\ behaviour\ should\ do\ something/} NoMethodError: undefined method `username' for nil:NilClass ./pages/login_page.rb:10:in `login' ./my_example_spec.rb:11:in `block (2 levels) in <top (required)>' -e:1:in `load' -e:1:in `<main>'
它不應該是
on(LoginPage).login (autouser, password)
。它應該導航到頁面並運行login
方法。這是它在page_object gem
如何工作什麼的site_prism gem
它的意思是你的'login'方法中的@ login_page是零。定義在哪裏? – Anthony
'login_page.rb'是代碼中上面顯示的LoginPage的類文件。一切正常,它啓動瀏覽器,加載URL(即'@ login_page.load')。如果'login_page'類出現問題,那麼'.load'將不起作用。所以我認爲我調用'login'方法的方式有些問題。對第二個查詢還有什麼想法嗎? – paul