2014-03-31 2 views
0

내가 책에 따라 다음있어, 매일 레일 테스트를 실패 모르겠어요, 그것은 assigns 사용한다 : 그러나나는 RSpec에이 할당하지, 내 테스트 RSpec에와

it "assigns the requested Category to @category" do 
    category = FactoryGirl.create(:category) 
    binding.pry 
    get :edit, id: category 
    expect(assigns(:category)).to eq category 
end 

을 내 테스트가 실패하여 (위 그림 참조)

[1] pry(#<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_1>)> category 
=> #<Category id: 83, name: "Example category", user_id: 1, created_at: "2014-03-31 12:25:45", updated_at: "2014-03-31 12:25:45", amount: nil, group_id: nil, amount_in: nil, amount_out: nil> 

입니다. 좋아요, 카테고리는 괜찮습니다. 큰! 하지만, 실제로는 assigns이 실제로 무엇인지, 실제로 어디에 있는지 알지 못해서 문서를 찾을 수 없었습니다 (RSpec? FactoryGirl?). 어쨌든 내가 얻는 결과는 다음과 같습니다.

[2] pry(#<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_1>)> assigns(:category) 
=> nil 

. 그리고 그것은 없습니다. 만약 누군가가 명백한 방향으로 나를 가리켜 주면 좋을지 모르며 심지어는 단지 assigns이 실제로 여기 (또는 의미하는) 무엇을 조금 설명해 주어도 대단히 감사하겠습니다. 또한 assigns에 대한 설명서는 어디에 있습니까?

+0

https://github.com/rspec/rspec-rails#assignkey-val –

답변

1

assigns은 실제로 Rails 기능 테스트 프레임 워크의 일부입니다. 이는 컨트롤러에 할당 한 인스턴스 변수 (@ 변수)에 액세스하는 방법입니다. 따라서 컨트롤러 작업에 @category을 설정하지 않으면 assigns(:category)이 0이됩니다.

assigns에 대한 자세한 내용은 테스트를위한 Ruby on Rails 안내서 this section을 확인하십시오. 그것의 전체 문서는 ActionController::TestCase documentation에 있습니다.

0

컨트롤러를 호출 한 후 할당에서 예상해야하는 것은 컨트롤러가 인스턴스 변수에 설정 한 값을 갖는 것입니다. @category를 사용하는 것처럼 보일 수 있습니다. 따라서 FactoryGirl로 생성 된 카테고리는 컨트롤러에 의해 생성 된 카테고리와 같지 않습니다 (이 경우 사용자의 액션이 인스턴스 변수에 nil 값을 반환하고있는 것 같습니다).