2011-03-19 54 views
1

我不明白与rspec的测试关联(has_many/belongs_to)相当基本的内容。尽管用户无效(has_many/belongs_to关联),Rspec - respond_to“user post”仍然有效

协会型号:

user has_many :posts 
post belongs_to :user 

我设置没有任何属性和测试的用户,如果一个职位应的respond_to用户。该测试是有效的,但用户无效(而不是创建)。

我知道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

用户确实回复帖子,它只是返回一个空数组。在Rails控制台试试这个:

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

一个更好的检验可能是:

@user.posts.should be_empty 

老实说测试轨道的关系通常不建议你基本上测试轨道它的自我这已经是非常行之有效的。

然而,早该提供了一些很好的匹配,在rspec的工作,以检查关系设置正确:

it {should have_many(:posts)} 

检查它在github上:https://github.com/thoughtbot/shoulda

+0

感谢我试过没有之前测试( :每个)块,我得到以下错误:失败/错误:@ user.should respond_to(:职位)预计无回应:职位。给我的理解。我会看看应该。谢谢! – benoitr 2011-03-19 17:29:52

相关问题