0

なぜこれらのテストが失敗するのか、一生理解できません。

ユーザーが電子メール/パスワードを入力して [ログイン] ボタンをクリックすると、プロフィール ページにリダイレクトされ、タイトルに名前が表示され、ページに名前が表示されます。また、プロファイルへのリンクとサインアウト リンクも表示されます。ブラウザで手順を実行すると、すべてが本来あるべき場所にありましたが、rspec を実行すると失敗し続けます。

私が非常に奇妙だと思うのは、同じ要素をテストする user_page_spec テストを実行すると、それらがすべて合格することです。

コントローラーの click_button 部分または「redirect_to user」のいずれかに関係していると思いますが、洞察をいただければ幸いです。

ここにテストがあります-

user_pages_spec.rb でのテストの合格-

describe "profile page" do
    let(:user) {  FactoryGirl.create(:user)  }
    before {  visit user_path(user)  }

    it {  should have_selector('h1',    text: user.firstName)  }
    it {  should have_selector('title', text: user.firstName)  }
end

authentication_pages_spec.rb でのテストの失敗 - 「spec_helper」が必要です

describe "Authentication" do
    describe "sign in" do
    .
    .
    .
    describe "with valid information" do
        let(:user) {  FactoryGirl.create(:user)  }
        before do
            fill_in "Email",            with: user.email
            fill_in "Password",     with: user.password
            click_button "Log in"
        end

        it {  should have_selector('title', text:user.firstName)  }
        it {  should have_link('Profile', href: user_path(user))  }
        it {  should have_link('Sign out', href: signout_path)  }

        describe "followed by signout" do
            before {  click_link "Sign out"  }
            it {  should have_link('Home')  }
        end
    end
  end
end
4

1 に答える 1

0

うん。最大の頭痛の種となるのは、常に最も単純な見落としです。

これが何が起こったのかです。

以下を使用するのではなく、

describe "page" do
  it "should have something" do
    page.should have_selector('')
  end
end

Rspecを使用すると、サブジェクトを定義できます-

subject {  page  }

これにより、最初のコード ブロックを次のように簡略化できます。

subject {  page  }
describe "page" do
  it {  should have_selector('')  }
end

これにより、余分な入力なしでページを参照する複数のテストを実行できます。

一番上にある { page } という件名を省略したため、どの it {} ブロックも何を参照すればよいかわかりませんでした。それが追加されるとすぐに、すべてのテストが問題なくパスしました。

これが将来他の誰かに役立つことを願っています。

于 2013-04-14T05:30:44.717 に答える