Ошибка теста Rails, NameError: неинициализированная константа User :: FILL_IN - PullRequest
0 голосов
/ 16 февраля 2019

В настоящее время я изучаю учебник по Ruby on Rails on Rails.

Я провел тестирование rails, а затем получил эту ошибку.

журнал ошибок

UsersSignupTest#test_valid_signup_information_with_account_activation:
NameError: uninitialized constant User::FILL_IN
    app/models/user.rb:42:in `activate'
    app/controllers/account_activations_controller.rb:6:in `edit'
    test/integration/users_signup_test.rb:39:in `block in <class:UsersSignupTest>'

Я делаюне понимаю смысла этой ошибки.Я должен инициализировать constant User::FILL_IN вероятно.

app / models / user.rb

class User < ApplicationRecord
  attr_accessor :remember_token, :activation_token
  before_save :downcase_email
  before_create :create_activation_digest

....

def activate
  update_columns(activated:FILL_IN, activated_at:FILL_IN)
end

app / controllers / account_activations_controller.rb

class AccountActivationsController < ApplicationController

  def edit
    user = User.find_by(email: params[:email])
    if user && !user.activated? && user.authenticated?(:activation, params[:id])
      user.activate
      log_in user
      flash[:success] = "Account activated!"
      redirect_to user
    else
      flash[:danger] = "Invalid activation link"
      redirect_to root_url
    end
  end
end

тест / интеграция/users_signup_test.rb

require 'test_helper'

class UsersSignupTest < ActionDispatch::IntegrationTest

...

 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

Не могли бы вы помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы не должны использовать слова FILL_IN.Вы должны изменить FILL_IN на то, что вам нужно, чтобы пройти тесты.Вам, вероятно, нужно что-то вроде:

update_columns(activated: true, activated_at: Time.now)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...