2012-12-12 5 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

솔직히 말해서, 저는 testing, 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 

을 또는 : 거기 당신은 그것이 게임 제작 방법은 필터 전에이다 넣어 포함 할 수있는 몇 가지 다른 방법이 있습니다.

이것은 우리가 수행하는 방법입니다.

관련 문제