1

我检查了我的 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| 之后的所有变量)尚未涵盖。

任何想法,我怎么能测试这些东西? 在此处输入图像描述

4

1 回答 1

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

于 2015-06-04T11:51:46.080 回答