QA@IT

Rspecで生成後のオブジェとのメゾットが正しくはいっているかを確認する

2414 PV

rspecを使ってテストを書き始めたのですがわからないことが多く躓いています。

今、Omniauth + Devise を使いユーザーのログインを実装しているところで、
モックを使い、下記のテストが通るところまでは確認しています。

describe "Authentications" do
  it "sign up with twitter" do
    visit new_user_session_path
    expect { click_link "Twitter で認証"}.to change(User, :count).by(1)
  end
end

Userモデルの子要素にそれぞれのOAuthプロバイダーが Identity モデルとしてある設計にしています。

正常にログインできていればTwitterの screen_name(([:info][:nickname])) が
Userモデルのカラム screen_nameにコピーされ、それを使って slugカラムも保存時に生成されるはずなのですが
その事をテストするためにはどのようにRspecで書けばいいかわからず先に進めない状態です。

何かアドバイスや参考になるページの指示を頂けないでしょうか。

回答

増えたユーザーを取り出せないので困ってるって事ですか?
以下のような形にすればよいような気がしますが。

describe "Authentications" do
  it "sign up with twitter" do
    visit new_user_session_path
    expect { click_link "Twitter で認証"}.to change(User, :count).by(1)
  end

  describe "new user" do
    let(:new_user) { User.last }
    it  do
       new_user.slug_name.should 
    end
  end
end
編集 履歴 (1)
  • User.lastを使えば良かったんですね。生成した時に受け取る方法を探していました。ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。