2013-05-21 2 views
1

При использовании автоматизированных тестов, чтобы проверить, что мои пользовательские маршруты работают, я все это:Интеграционные тесты Rails. Тестирование на реальных страницах

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

или теста «что/выход из системы маршрут открывает страницу выхода из системы» сделать получить «/ выход из системы ' assert_response: redirect end Является ли это достаточно хорошим тестом? На мой взгляд, это немного расплывчато. Как я могу написать тест, чтобы явно проверить, что маршрут/logout фактически переходит на страницу выхода/пользователю предоставляется окно выхода из системы?

ответ

1

Я предлагаю вам изучить rspec/rails и capybara для integration или или acceptance тестов. Эти тесты более наглядны и звучат как то, о чем вы можете просить. Например, эта спецификация описывает процесс аутентификации

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 Tutorial book и является бесплатным онлайн. Он содержит сотни примеров тестирования интеграции.

0

Рельсы имеют испытательные установки для маршрутизации. См. http://guides.rubyonrails.org/testing.html#testing-routes для получения дополнительной информации. Это проверит, что определенные запросы направляются к определенному контроллеру и действию. Если вы хотите проверить, что определенные страницы или содержимое страницы было загружено после запроса, вы можете использовать тесты интеграции/просмотра, чтобы убедиться, что доступны конкретные данные страницы (например, заголовок страницы, характерный для рассматриваемой страницы).

Смежные вопросы