我查看了我的简单结果,我看到了
record = User.where("fb_id = ? or email = ? ", params[:fb_id], params[:email]).first_or_create do |rows|
rows.first_name = params[:first_name]
rows.last_name = params[:first_name]
等(do | rows |之后的所有变量)都没有涵盖。
任何想法,我怎么能测试这个东西?
答案 0 :(得分:-1)
只有在where
子句没有匹配项时才会调用该块:
http://apidock.com/rails/ActiveRecord/Relation/first_or_create
<强>更新强>
您的测试存根User
如下:
expect(User).to receive_message_chain(:where, :first_or_create).and_return(user)
您需要进行第二次测试,其中where
返回空结果集而不是用户,以验证块中行的行为。