私は、Ruby と RSpec の両方に慣れていないと言わざるを得ません。とにかく、RSpec スクリプトを 1 つ完成させましたが、リファクタリング後に失敗しました。元の作業バージョンは次のとおりです。
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」メソッドに関連付けられたコード ブロック内でサイトが nil と評価されることです。しかし、私がこれをしたとき:
...
s = site
it "can navigate to #{page_name}" do
s.goto(page_name)
s.actual_page.name.should eq page_name
end
...
nilの問題はなくなりましたが、「ブラウザが閉じられました」という理由でテストが失敗しましたどうやら、非常に基本的なRubyの知識が欠けているようです-変更されたスクリプトでブラウザの参照が正しく機能しないためです。どこで私は間違えましたか?これを機能させるには、どのようなリファクタリングを適用する必要がありますか? ご協力いただきありがとうございます!