2010-04-15 2 views
1

нормально для передачи параметров через в RSpec мы делаем:Передача прямых параметров метода Controller # при тестировании с помощью RSpec

params[:my_key] = my_value 
get :my_method 

Где my_method дело с тем, что он получил от Params. Но в моем контроллере у меня есть метод, который принимает арг непосредственно т.е .:

def my_method(*args) 
    ... 
end 

Как вызвать метод с той арг внутри теста? Я пробовал get :my_method(args), но интерпретатор Ruby жалуется на синтаксическую ошибку.

ответ

3

Насколько я могу судить, вы не можете этого сделать. Вы можете извлечь my_method в помощник или в библиотеку, а затем протестировать его с помощью Rspec, если вам нужно напрямую проверить my_method. Или вы можете структурировать свои тесты контроллера, чтобы код в my_method выполнялся как часть действия контроллера, которое может вызываться одним из стандартных HTTP-глаголов (get, post, put, delete).

В конечном счете, вы можете достичь любого кода, который использует ваш контроллер, настроив тесты с помощью get, post и т. Д., Поскольку в противном случае Rails не смог бы этого сделать, и ваше приложение не сработало. Это может привести к неудобствам в тестировании, но может также сказать вам, что my_method будет лучше жить вне контроллера.