Передача прямых параметров в метод Controller # при тестировании через RSpec - PullRequest
1 голос
/ 15 апреля 2010

Обычно для передачи параметров через в RSpec мы делаем:

params[:my_key] = my_value
get :my_method

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

def my_method(*args)
  ...
end

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

1 Ответ

3 голосов
/ 16 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...