ruby-on-rails - Rails 教程上的 Rails 测试,ArgumentError
问题描述
我目前正在学习 Ruby on Rails on Rails 教程。当我做rails测试时,我遇到了这个错误。
日志
ArgumentError: wrong number of arguments (given 2, expected 1)
app/models/user.rb:35:in `authenticated?'
app/controllers/account_activations_controller.rb:4:in `edit'
test/integration/users_signup_test.rb:35:in `block in <class:UsersSignupTest>'
应用程序/模型/user.rb
def authenticated?(remember_token)
return false if remember_digest.nil?
BCrypt::Password.new(self.remember_digest).is_password?(remember_token)
end
应用程序/控制器/account_activations_controller.rb
def edit
user = User.find_by(email: params[:email])
if user && !user.activated? && user.authenticated?(:activation, params[:id])
user.update_attribute(:activated, true)
user.update_attribute(:activated_at, Time.zone.now)
log_in user
flash[:success] = "Account activated!"
redirect_to user
else
flash[:danger] = "Invalid activation link"
redirect_to root_url
end
测试/集成/users_signup_test.rb
test "valid signup information with account activation" do
get signup_path
assert_difference 'User.count', 1 do
post users_path, params: { user: { name: "Example User",
email: "user@example.com",
password: "password",
password_confirmation: "password" } }
end
assert_equal 1, ActionMailer::Base.deliveries.size
user = assigns(:user)
assert_not user.activated?
log_in_as(user)
assert_not is_logged_in?
get edit_account_activation_path("invalid token", email: user.email)
assert_not is_logged_in?
get edit_account_activation_path(user.activation_token, email: 'wrong')
assert_not is_logged_in?
get edit_account_activation_path(user.activation_token, email: user.email)
assert user.reload.activated?
follow_redirect!
assert_template 'users/show'
assert is_logged_in?
end
end
你能给我建议来解决这个问题吗?
解决方案
看起来您在第二行中为authenticated?
方法提供了附加参数。app/controllers/account_activations_controller.rb#edit
删除它,这应该可以工作。
推荐阅读
- javascript - TypeScript:尝试访问枚举时没有带有“字符串”类型参数的索引签名
- python - Series.map 和 Series.apply 的区别
- java - HTTP 消息未正确加载(Android)
- cpu-architecture - 实现逻辑门的直觉
- ios - 快速呈现自定义 ViewController 类?
- javascript - 如何使用 CSP 在网页上隐藏元素
- r - Stacked bar plot with points, but with different aestetics length - ggplot2
- payment-gateway - 如何获取 Chase Paymentech 托管SecureID 和hostedSecureAPIToken 以发出uID 初始化请求
- node.js - 有没有办法在 pm2 中显示我的进程的启动参数?
- javascript - 在 CSS 和 JS 中更改背景