微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Minitest 控制器序列来断言对计算变量的更改

如何解决Minitest 控制器序列来断言对计算变量的更改

第一次测试

assert_changes '@user_end.login_name' do
  post update_login_user_path(id: @user_end.id),params: { user: { email: '',mobile_nation_id: 1,mobile: 876321 } }
end

"@user_end.login_name" didn't change.
Expected "end_consumer_email@mail.co" to not be equal to "end_consumer_email@mail.co".

第二次测试

post update_login_user_path(id: @user_end.id),mobile: 876321 } }
assert_equal(39876321,@user_end.login_name)

Expected: 39876321
Actual: "end_consumer_email@mail.co"

两者都返回夹具值而不是预期值,这是在应用程序中实际生成的。控制器动作:

  if params[:user][:email].present? || params[:user][:mobile].present?
    set_user_login_name
  end

调用方法

  def set_user_login_name
    if !params[:user][:email].blank?
      params[:user][:login_name] = params[:user][:email].gsub(/\s+/,"")
    elsif !params[:user][:mobile_nation_id].blank? && !params[:user][:mobile].blank?
      @nation = Nation.where(id: params[:user][:mobile_nation_id]).first
      params[:user][:login_name] = @nation.phone_cc.to_s + params[:user][:mobile].to_s
      params[:user][:twilio_number] = '+' + @nation.phone_cc.to_s  + params[:user][:mobile].to_s
    else
      params[:user][:login_name] = ''
    end
    params[:user][:kee] = SecureRandom.alphanumeric(32)
    params[:user][:virtual_qr_code] = params[:user][:login_name] + params[:user][:kee]
  end

由于这些方法在实践中起作用,很明显我没有掌握如何正确使用这两个断言。我似乎无法调用更新的记录 (而创建 assert_equal('18831912200',User.last.login_name) 很简单)

如何强制转换其中之一来断言上述方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。