2016-02-26 13 views
1

Я писал тесты интеграции для своей заявки. Я знаком с проверками контроллера и обычным тестированием интеграции. Тем не менее, я не уверен, как тестировать вложенные ресурсы при тестировании интеграции. У меня есть модель команд, которая встроена в модель табло. Соответствующий код маршрута приведен ниже.Тестирование вложенных маршрутов в рельсах

resources :scoreboards do 
    resources :teams, only: [:edit, :create, :destroy, :update] 
end 

Я хочу проверить все важные рабочие процессы для команд. Например, недействительное и действительное создание команд. Тестовый код написан ниже.

def setup 
    ActionMailer::Base.deliveries.clear 
    @scoreboard = scoreboards(:scoreboard_a) 
    end 



test 'Invalid creation of the teams' do 
    assert_no_difference 'Team.count' do 
     post scoreboards_teams_path(@scoreboard), team: {name: " ", 
                 win: 0, 
                 loss: 0, 
                 tie: 0 } 

    end 
    end 

У меня есть проверка, настроенная таким образом, чтобы имя команды присутствовало. Проблема связана с маршрутами. У меня также есть ассоциация, созданная с помощью табло_базы. Файл teams.yml приведен ниже.

team_a: 
    name: team 
    win: 1 
    loss: 2 
    tie: 0 
    id: 2 
    scoreboard: scoreboard_a 

У меня нет ошибки метода. Ошибка приведена ниже.

`NoMethodError: undefined method `scoreboards_teams_path'. 

Так как команды вложены внутрь табло показывают страницу. Поэтому нет нового действия, на которое я могу вызвать запрос get. Мой вопрос в том, как я могу вызвать запрос на отправку для объекта команд. Я не совсем уверен, как это сделать. Я пробовал просматривать документацию, но на самом деле ничего нет на вложенных маршрутах. У меня есть другие объекты, которые также встроены в табло. Поэтому понимание того, как вложенные маршруты тестируются в рельсах, действительно будет иметь большое значение. Как всегда, любая помощь очень ценится. Благодаря!!

ответ

1

Rails руководства имеется раздел по вложенным вспомогательным ресурсам, которые должны достаточно ответить на ваш вопрос: http://guides.rubyonrails.org/routing.html#nested-resources

Вы можете вызвать новое действие с именем помощником:

new_scoreboard_team_path 

Сообщения по имени помощник для вас будет быть

scoreboard_teams_path 

ваш код говорит scoreboards_teams_path

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