私はCapybaraのRSpecテストをRailsアプリケーションで作成しています。私は、アプリケーションのホームページを読み込んで、特定の要素がページに存在するかどうかテストしたいと思います。これを行うには、私は、特にこれらの束を持っているような同じit
ブロック内のステートメントを期待していないページを1回訪問しますが、Capybara/RSpecでブロックを区切ります
context "Logo is present" do
it "is configured properly" do
visit root_path
expect(page.find("a.logo")[:alt]).to have_content("blah")
expect(page.find("a.title")[:alt]).to have_content("title")
... 4 more expect lines here ...
end
end
のようなものを書いています。私はむしろ別のそれのブロックを持っており、このような何かしたい:
context "Logo is present" do
before(:all) {visit root_path}
it "has a valid alt" do
expect(page.find("a.logo")[:alt]).to have_content("blah")
end
it "has a valid title" do
expect(page.find("a.title")[:alt]).to have_content("title")
end
... 4 more it lines here ...
end
問題がbefore(:all) {visit root_path}
への呼び出しです。私はそれがすべてのit
ブロックの前に1回実行されることを望んでいました。残念ながら、最初のit
ブロックが実行された後、カピバラがページを裂くように見えるので、最初のブロックを除くすべてのit
ブロックは失敗します。
ページを一度訪れて、そのページを使用する複数のit
ブロックを持つ方法はありますか?私は別々のit
ブロックを持っているときにページを複数回訪問することの代価を支払うことを避けようとしています。