如何解决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 举报,一经查实,本站将立刻删除。