Не удается получить доступ к переменной Thread в тесте Rails Controller - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть приложение на Ruby on Rails 5, где я использую переменную Thread для доступа к пользователю, инициирующему действие для моей собственной проприетарной регистрации. Все работает нормально, пока не доходит до моих автоматических тестов.

У меня есть модуль в lib/current.rb:

module Current
  thread_mattr_accessor :user
end

В моем app/controllers/application_controller.rb я установил текущего пользователя следующим образом:

around_action :set_current_user

[...]

def set_current_user
  Current.user = current_user
  yield
ensure
  Current.user = nil
end

При этом я могу войти в систему вошедшего в систему пользователя при создании / обновлении / удалении объекта в моем приложении, например, в app/models/entity.rb:

after_create :log_create
before_update :log_update
before_destroy :log_destroy, prepend: true

[...]

def log_destroy
  ApplicationController.helpers.create_change_log([...], Current.user.id)
end

КакКак указано выше, это работает нормально, пока я не попытаюсь запустить свои автоматические тесты:

entity_instance = Entity.find([...])
entity_instance.destroy

Это приводит к следующему сообщению об ошибке:

Minitest::UnexpectedError: NoMethodError: undefined method `id' for nil:NilClass

Я заверил, что ошибка указывает нанесуществование Current.user. У кого-нибудь есть идея, почему это может иметь место?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...