2013-08-20 5 views
0

나는 RSpec 테스트에 실패하고 난 이유를 모르겠다. 누군가 내가 실수를하는 곳을 볼 수 있도록 도와주기를 바라고 있습니다.레일즈 RSpec은 레코드 대신에 Nil을 반환 함

작업은 단순히 시험은 전무 대신 GroupMember 내 기대 값으로 반환되고 있음을 말하는 실패 group_member.status == "approved"

으로 주어진 User에 대한 GroupMember 기록을 가져옵니다.

내 개발 환경에서보기 때문에보고 있다는 것을 알고 있습니다.

# users_controller 
def groups 
    @group_member = current_user.group_members.approved 
end 

# user.rb 
has_many :group_members, :dependent => :destroy 

# routes.rb 
resources :users do 
    collection do 
    get 'groups'  
    end 
end 

# group_member.rb 
belongs_to :user 
scope :approved, where(:status=>"approved") 

# users_controller_spec.rb 
describe "GET #groups" do 
    before :each do 
    @user = FactoryGirl.create(:user) 
    current_user = sign_in @user 
    @group_member = FactoryGirl.create(:group_member, user_id: @user.id, status: "approved") 
    end 

    it "assigns group member correctly" do 
    get :groups 
    assigns[:group_member].should eq [@group_member] 
    end 

end 
+0

'sign_in @ user'가 실제로 current_user를 반환하는지 확인할 수 있습니까? 또한'current_user'를'@ current_user'로 변경하려고합니다. –

+0

안녕하세요 Jason, current_user 행을 It 블록으로 옮기려고했는데 current_user를'@ current_user'로 설정하려고 시도하고 get : groups, current_user : '@ current_user'. 그것의 아무도는 그러나 일하지 않았다. – yellowreign

+0

'sign_in' 방법을 보여줄 수 있습니까? –

답변

0

나는이 방법을 많이 사용하지 않지만, documentation에서 나의 이해는 assignsassigns(:group_member) 같이 매개 변수로 변수 기호를 받아들이는 방법이다. 완료 한대로 []을 통해 액세스하는 객체를 반환하지 않습니다.

관련 문제