Подтвердить что ты не робот

Сообщение другому контроллеру в тесте rspec

Как отправить сообщение другому контроллеру, чем те, на которые указывает тест script?

Пример: в user_controller_spec.rb

  it "should just post to users" do        
    post :create, @params    # this goes to the users controller
  end

Я хочу сделать что-то вроде:

  it "should post to user and people to do some integration testing" do        
    post :create, @params    # this goes to the users controller still
    post 'people', :create, @params   # this goes to the people controller
  end

ps: я не хочу настраивать огурец

4b9b3361

Ответ 1

Спецификации контроллера являются оболочками для функциональных тестов Rails, которые не поддерживают несколько запросов или контроллеров. Вы хотите использовать спецификацию запроса RSpec (рельсы 3) или спецификацию интеграции (рельсы 2). Эти тесты интеграции Rails-пакетов, которые поддерживают несколько запросов с несколькими контроллерами (несколько сеансов, даже), но они немного отличаются от спецификаций контроллера. Вы должны использовать полный путь (так что получите new_thing_path), и вы не можете заглушить что-либо на контроллере (потому что перед вашим запросом нет контроллера).

Смотрите http://relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec и http://api.rubyonrails.org/classes/ActionDispatch/IntegrationTest.html для Дополнительная информация.

Ответ 2

Существует способ, если вы назначаете значение @controller перед методом тестирования вызова. Пример

def setup

  @controller = UserController.New

  do user stuff

  @controller = ThisController.New

  do test intented for this controller
end