2012-12-12 2 views
0

У меня есть игровая модель с несколькими релизами (has_many). Я решил использовать вложенные ресурсы, чтобы выразить это.Как проверить вложенные ресурсы

resources :games do 
    resources :releases, only: [:new, :create, :destroy] 
end 

Я пытаюсь использовать RSpec для проверки действий контроллера релиза. Вот часть моего тестового файла.

describe "GET new" do 
    it "assigns a new release as @release" do 
    get :new, {}, valid_session 
    assigns(:release).should be_a_new(Release) 
    end 
end 

Когда я не задал параметр game_id, у меня ошибка совпадения маршрутов. И когда я добавляю :game_id => 1, у меня есть ошибка RecordNotFound.

Итак, мой вопрос: как установить игровой объект для выражения вложенного ресурса?

+0

Это должно работать, но я думаю, вам нужно сначала создать «игру» - мы делаем это с помощью factorygirl, но вам это не нужно. S – simonmorley

+0

Спасибо, честно говоря, я не очень хорошо знаком с тестированием, rspec и factorygirl. Можете ли вы опубликовать пример, если он у вас есть? – NotGrm

ответ

0

Я действительно новичок в rspec тоже - будьте нежны :) Как только вы правильно изучите свои приложения, ваша жизнь будет быстрее, лучше и менее напряженной. Ваши приложения будут полезны еще больше, и ваши клиенты тоже будут.

Через месяц или около того я не пользуюсь браузером, пока мне не понадобится стилизовать мои страницы. Быстрее и эффективнее.

Лично я начал читать через этот учебник:

А также, как всегда, следующие Railscasts сильно помогло:

В вашем случае попробуйте что-то вроде этого (без FactoryGirl).

describe "GET new" do 
it "assigns a new release as @release" do 
    game = Game.create!(<< INSERT VALID ATTRIBUTE >>) 
    get :new, {:game_id => game.id}, valid_session 
    assigns(:release).should be_a_new(Release) 
end 
end 

Я думаю, что это правильно, не проверили себя. Там же несколько других способов, вы могли бы сделать это в том числе поставить метод создания игры является перед фильтром:

before(:each) do 
    @game = Game.create!(<< INSERT VALID ATTRIBUTE >>) 
end 

Или, как я уже сказал, с помощью Factory Girl, чтобы построить модель для вас.

Так мы это делаем.

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