Rspec测试find_or_create方法

时间:2015-06-04 10:13:54

标签: ruby-on-rails rspec mocking simplecov

我查看了我的简单结果,我看到了

    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 |之后的所有变量)都没有涵盖。

任何想法,我怎么能测试这个东西? enter image description here

1 个答案:

答案 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返回空结果集而不是用户,以验证块中行的行为。