2011-03-19 2 views
1

rspec과 관련된 테스트 (has_many/belongs_to)를 통해 상당히 기본적인 것을 이해하지 못합니다. 모델Rspec - 사용자가 유효하더라도 "사용자 게시"응답이 유효하지 않습니다. (has_many/belongs_to association)

협회는 : 게시물 사용자를 respond_to하는 경우는

user has_many :posts 
post belongs_to :user 

나는 어떤 속성과 시험이있는 사용자를 설정합니다. 테스트는 유효하지만 사용자는 유효하지 않으며 생성되지 않습니다.

나는 respond_to가 연결을 통해 게시물의 존재 여부 만 테스트하지만 유효한 사용자 없이는 어떻게 존재할 수 있는지 알고 있습니다. 누군가 왜 나를 설명 할 수 있을까요? 고맙습니다!

user_spec.rb

require 'spec_helper' 

describe User do 

    describe "post associations" 

    before(:each) do 
     @user = User.create(@attr) #no attribute is set 
    end 

    it "should have a post attribute" do 
     @user.should respond_to(:posts) 
    end 

    end 

end 

답변

2

사용자 게시물에 응답은, 그냥 빈 배열을 반환한다. 레일 콘솔에서이 시도 :

> @user = User.new 
> @user.posts 
=> [] 

더 좋은 테스트가 될 수있다 :

@user.posts.should be_empty 

솔직히 테스트 레일 관계는 일반적으로 권장되지 않습니다 당신이 본질적으로 이미 잘 테스트 그것을 자기 레일을 테스트하고있다. 나는 전에없이 테스트하기 위해 노력 https://github.com/thoughtbot/shoulda

+0

감사합니다 (:

it {should have_many(:posts)} 

는 GitHub의에 체크 아웃 :

그러나 했어야 관계가 올바르게 설정되어 있는지 확인 RSpec에 작동 멋진 매처 (matcher)를 제공합니다 : each) 블록 및 다음 오류가 발생합니다. 오류/오류 : @ user.should respond_to (: posts) 응답 할 예상되는 없음 : 게시물. 이해심을 주렴. 나는 shoulda를 보게 될 것이다. 고맙습니다! – benoitr

관련 문제