1

rspecとの関連付け(has_many / Belongs_to)をテストすることでかなり基本的なことを理解していません。

モデル内の関連付け:

user has_many :posts
post belongs_to :user 

属性のないユーザーを設定し、投稿がuserに応答する必要があるかどうかをテストします。テストは有効ですが、ユーザーは無効です(作成されていません)。

reply_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
4

1 に答える 1

2

ユーザー投稿に応答しますが、空の配列を返すだけです。Railsコンソールでこれを試してください:

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

より良いテストは次のとおりです。

@user.posts.should be_empty

正直なところ、レールの関係をテストすることは通常はお勧めしません。これは、基本的に、すでに非常によくテストされているレール自体をテストしているためです。

ただし、shouldaには、関係が正しく設定されていることを確認するためにrspecで機能する優れたマッチャーがいくつか用意されています。

it {should have_many(:posts)}

githubでチェックしてください:https ://github.com/thoughtbot/shoulda

于 2011-03-19T17:25:24.867 に答える