2015-03-03 2 views
0

Я бегу Rails 4 с Ruby 2.1.1.Как написать утверждение, которое проверяет метод контроллера, дает конкретное представление?

у меня в контроллере def home render :index end и я пишу Unit :: Test, чтобы проверить, что контроллер делает вид index с помощью метода home.

Как я могу написать утверждение? До сих пор я test "home should have index" do assert true end

Моего тест проходит, конечно, потому что у меня assert true, но при взгляде над документацией, и, возились вокруг, я до сих пор не знаю, как писать правильный функциональный тест для контроллера. Многие источники являются неполными или неопределенными и видя, как простой вопрос о переполнении стека, касающийся написания простого функционального теста с использованием Unit :: Test, появляется в Stack Overflow, я полагал, что это будет отличный вопрос.

Все, что я хочу, это ясный ответ, чтобы утверждать, что мой функциональный тест проверяет, что метод home отображает index. Как только я выясню, как написан базовый функциональный тест, я думаю, что смогу продолжить тестирование остальной части своего приложения.

Приветствия

TL; DR я не знаю, как написать основной функциональный тест. Как мне это сделать? Пожалуйста, будьте Unit :: Test beginner friendly.

ответ

0

Используйте assert_template, чтобы утверждать, что запрос был обработан соответствующим файлом шаблона или частичными.

test "home should have index" do 
    get :home 
    assert_template 'index' 
end 
+0

@Altun Это считается функциональным испытанием только для контроллера StaticPagesController. Тест должен находиться в файле: 'test/controllers/static_pages_controller_test.rb'. См. RailsGuide здесь: http://guides.rubyonrails.org/testing.html#testing-templates-and-layouts – 7stud

+0

@infused, большое спасибо за четкий и краткий ответ. Ага! 'assert_template' после' get: home'. Насколько ясны и кратки, как может быть. Большое спасибо. – Altun

0

Добавление к ответу infused «s:

  1. Это считается функциональный тест для конкретного контроллера только, чьи функции и ограничения описаны в RailsGuide here.

  2. Если имя вашего контроллера является StaticPagesController, тест должен быть в файле:

    test/controllers/static_pages_controller_test.rb

  3. RailsGuide описывает, как проверить на тонированном зрения here.

  4. Вы можете запустить тесты, как это:

    $ bundle exec rake test

    или:

    $ bundle exec rake test:functionals

видя, как не просто переполнения стека вопрос не о написании простой функциональный тест с использованием модуля :: Тест появляется при переполнении стека

Это потому, что у Rails есть собственный тестовый фреймворк.Файл test/controllers/static_pages_controller_test.rb на самом деле выглядит следующим образом:

require 'test_helper' 

class StaticPagesControllerTest < ActionController::TestCase 

    test 'home should get index' do 
    get :home 
    assert_template :index 
    end 

end 

Примечание суперкласс: ActionController::TestCase. Поскольку RailsGuide notes, ActionController::TestCase включает MiniTest, который является mostly a drop in replacement для Test::Unit.

+0

7stud, ваш ответ был фантастическим. Он содержал больше, чем мне было нужно, но ваша дополнительная, релевантная информация, безусловно, поможет мне стать обезьяной с кодом версии :: Unit. Я рекомендую этот пост всем, кого я слышу, о функциональном тестировании. Очень привет. – Altun

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