我不得不說我對Ruby和RSpec都是新的。無論如何,我完成了一個RSpec腳本,但重構後失敗了。原來這裏是工作的版本:爲什麼在此RSpec腳本中沒有正確傳遞對象引用?
describe Site do
browser = Watir::Browser.new :ie
site = Site.new(browser, "http://localhost:8080/site")
it "can navigate to any page at the site" do
site.pages_names.each do |page_name|
site.goto(page_name)
site.actual_page.name.should eq page_name
end
end
browser.close
end
這裏是修改的版本 - 我想報道所有被測試期間訪問過的網頁:
describe Site do
browser = Watir::Browser.new :ie
site = Site.new(browser, "http://localhost:8080/site")
site.pages_names.each do |page_name|
it "can navigate to #{page_name}" do
site.goto(page_name)
site.actual_page.name.should eq page_name
end
end
browser.close
end
在後一種情況下的問題是該網站在與「it」方法關聯的代碼塊中被評估爲零。 但是,當我這樣做:
...
s = site
it "can navigate to #{page_name}" do
s.goto(page_name)
s.actual_page.name.should eq page_name
end
...
的零問題消失了,但測試失敗,「瀏覽器已關閉」的原因 顯然我失去了一些東西很基本的Ruby知識 - 因爲瀏覽器引用不是在正常工作修改腳本。我哪裏做錯了?應該使用什麼重構來完成這項工作? 感謝您的幫助!
非常感謝你Myron!你的回答讓我大開眼界。事實上,我想要的是用每個塊定義幾個RSpec的例子,而不是單一的。現在你的解釋我看到我在做什麼錯誤,並能夠改變代碼做我想做的事情:) – tom
蘇爾e,我很高興它有幫助! –