Самый простой способ это сделать:
helper.params = {:foo => '1', :bar => '2'}
Но в целом лучше быть более интегрированными, а не "тупыми" значениями, когда это возможно. Поэтому я предпочитаю использовать тесты контроллера с integrate_views . Затем вы можете указать свои параметры для get и проверить, что весь поток работает, от отправки параметров контроллеру до их обработки контроллером и, наконец, до рендеринга.
Я также обычно предпочитаю вытаскивать логику представления в помощники, которые легче проверить.
Например, скажем, у меня есть помощник по имени selection_list , который возвращает хэш, чей ключ "selected_preset" опирается на params [: selected_preset] , и по умолчанию равен 42, если пустой значение указывается для параметра.
Вот тест контроллера, в котором мы назвали integrate_views (вы, конечно, можете сделать то же самое с реальным тестом представления, если вам это нравится).
describe '#show' do
describe 'selected_preset' do
it 'should default to 42 if no value was entered' do
get :show, :params => {:selected_preset => ''}
response.template.selection_list[:selected_preset].should == 42
Этот интеграционный тест предупредит меня, если какая-то часть этой функции выйдет из строя. Но в идеале я также хотел бы провести несколько тестов unit , чтобы помочь мне точно определить эту поломку.
Я начну с того, что помощник будет использовать переменную экземпляра вместо прямого доступа к параметрам. Я изменю приведенный выше код, добавив одну строку непосредственно под get, как показано ниже:
describe '#show' do
describe 'selected_preset' do
it 'should default to 42 if no value was entered' do
get :show, :params => {:selected_preset => ''}
assigns[:selected_preset].should == 42 # check instance variable is set
response.template.selection_list[:selected_preset].should == 42
Теперь я также могу легко выполнить вспомогательный юнит-тест:
describe MyHelper do
describe '#selection_list' do
it 'should include the selected preset' do
assigns[:selected_preset] = 3
helper.selection_list[:selected_preset].should == 3