1

自動テストを使用してカスタム ルートが機能することをテストする場合は、次のようにします。

test "that /logout route opens the logout page" do
    get '/logout'
    assert_response :success
end

または、「その /logout ルートがログアウト ページを開く」ことをテストする do get '/logout' assert_response :redirect end これで十分なテストですか? 私の考えでは、それは少し曖昧に思えます。/logout ルートが実際にログアウト ページに移動している/ユーザーにログアウト ビューが提供されていることを明示的に確認するテストを作成するにはどうすればよいですか?

4

2 に答える 2

1

rspec/railsand capybarafor integrationand oracceptanceテストを調べることをお勧めします。これらのテストはより説明的であり、あなたが尋ねているかもしれないもののように聞こえます. たとえば、この仕様は認証プロセスを記述しています

describe "signin" do
before { visit signin_path }

describe "with invalid information" do
  before { click_button "Sign in" }

  it { should have_selector('title', text: 'Sign in') }
  it { should have_selector('div.alert.alert-error', text: 'Invalid') }

  describe "after visiting another page" do
    before { click_link "Home" }
    it { should_not have_selector('div.alert.alert-error') }
  end
end

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

  it { should have_selector('title', text: user.name) }

  it { should have_link('Users',    href: users_path) }
  it { should have_link('Profile',  href: user_path(user)) }
  it { should have_link('Settings', href: edit_user_path(user)) }
  it { should have_link('Sign out', href: signout_path) }
  it { should_not have_link('Sign in', href: signin_path) }

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

この例は、Ruby on Rails のチュートリアル ブックから引用したもので、オンラインで無料で入手できます。統合テストに関する何百もの例があります。

于 2013-05-21T03:55:57.113 に答える
0

Rails にはルーティング用のテスト機能があります。詳細については、http: //guides.rubyonrails.org/testing.html#testing-routesを参照してください。これにより、特定のリクエストが特定のコントローラーとアクションにルーティングされることがテストされます。リクエスト後に特定のページまたはページ コンテンツが読み込まれたことを確認したい場合は、統合 / ビュー テストを使用して、ページ固有のデータ (問題のページに固有のページ タイトルなど) が利用可能であることを確認できます。

于 2013-05-21T02:57:32.097 に答える