2012-12-28 4 views
7

RSpecを使用してBDDとBDDを使用して開発したい、 。現在、検証エラーのためオーガナイザの新しいインスタンス(作成したモデル)を作成できないかどうかを確認したいところです。私は、エラーメッセージがビューに表示するために利用できることを確認できるように、作成するオブジェクトのエラー配列が空でないことを確認したいと思います。Rails RSpec:コントローラのテスト、エラーのチェック検証エラーのために新しいレコードを作成できない場合は、モデルの配列が入力されます

は 'spec_helper' を必要と

は、私はRSpecの2キュウリレールとレールの3.2.9に基づいて開発しています render_views

describe "POST 'create'" do 

    describe "with invalid arguments" do 
    before(:each) do 
     request.env["HTTP_REFERER"] = organizers_new_path 
     @organizer_args = { :name => "" } 
    end  

    it "should return a non-empty list of errors" do 
     post 'create', :organizer => @organizer_args 
     @organizer.errors.empty?.should_not be_true 
    end 
    end 
end  

エンド

を行うOrganizersControllerを記述する。

ご迷惑をおかけして申し訳ございません。ありがとう!

答えて

14

あなたは、コントローラのアクションからインスタンス変数を取得するために割り当てメソッドを使用する必要があります。

assigns(:organizer).errors.empty?.should_not be_true 
11

最新の優先構文は次のとおりです。答えはみんなのために

expect(assigns(:organizer).errors.empty?).to_not be_true 
+0

「真」(スペースなし) – Tobi

1

おかげで、私はお勧めしたいのですがやや良い構文: expect(assigns(:organizer).errors).to_not be_empty

(質問に関係ありません)

基本的には、?で終わるメソッドがある場合は、be_で始まる対応するrspecマッチャーがあります。 1.odd? #=> true expect(1).to be_odd

関連する問題