2012-03-08 1 views
2

Мне не удалось найти много документации или совета по написанию хороших тестов контроллера RSpec. В частности, следует ли использовать Rails assert_select, который очень похож на RSpec или есть альтернатива для него?Использует assert_select для тестов контроллера RSpec?

Является ли приведенный ниже пример лучшей практикой?

describe ArticlesController do 
    render_views 
    let(:article) { create(:article) } 

    describe "show" do 
    it "should display the article title" do 
     get :show, id: article 
     response.should be_success 
     assert_select "h1", article.title 
    end 
    end 
end 

Я не хочу писать отдельные тесты просмотра, так как это довольно неудобно.

+1

док Rspec живет здесь: https: // WWW .relishapp.com/rspec. Но нет ничего особенного в вашем вопросе – apneadiving

ответ

0

Вы должны быть в состоянии использовать следующий код, чтобы проверить содержимое заголовка:

page.should have_selector("h1", :text => article.title) 

UPDATE: Как кто-то отметил (с -1) ответ был неправильным, переменная page что-то набор по Capybara после вызова метода visit (я был молод, когда я ответил: P). Таким образом, это то, что вы используете в тестах интеграции не в функциональных тестах (контроллерах), которые вы пытаетесь сделать.

Короткий ответ: Нет, это не правильно использовать assert_select в тестах контроллера (используется для проверки запроса ответов, если переменные установлены, и т.д ...)

+0

Спасибо, я пробовал это, но 'test' не определен в тесте. Это с rspec-rails 2.8.1 и Rails 3.2. –

+0

Mmmm ... у вас есть требование «spec_helper»? –

+0

Я новичок, но, возможно, переменная страницы задана посещением. Попробуйте заменить строку get: show с посещением «articles/show/# {article.id}» –