Вы можете проверить @controller.view_context
из ваших тестов функциональности / контроллера. Насколько я могу судить, этот метод доступен в Rails 3, 4 и 5.
приложение / контроллеры / application_controller.rb
class ApplicationController < ActionController::Base
helper_method :current_user
# ...
end
тест / контроллеры / application_controller_test.rb
require 'test_helper'
class ApplicationControllerTest < ActionController::TestCase
test 'current_user helper exists in view context' do
assert_respond_to @controller.view_context, :current_user
end
end
Если вы не хотите тестировать один из ваших подклассов контроллера, вы также можете создать тестовый контроллер, чтобы убедиться, что метод в view_context такой же, как у контроллера, а не у одного из ваших помощников вида.
class ApplicationControllerHelperTest < ActionController::TestCase
class TestController < ApplicationController
private
def current_user
User.new
end
end
tests TestController
test 'current_user helper exists in view context' do
assert_respond_to @controller.view_context, :current_user
end
test 'current_user returns value from controller' do
assert_instance_of User, @controller.view_context.current_user
end
end
Или, более вероятно, вы захотите проверить помощника при наличии запроса.
class ApplicationControllerHelperTest < ActionController::TestCase
class TestController < ApplicationController
def index
render plain: 'Hello, World!'
end
end
tests TestController
def with_routing
# http://api.rubyonrails.org/classes/ActionDispatch/Assertions/RoutingAssertions.html#method-i-with_routing
# http://guides.rubyonrails.org/routing.html#connecting-urls-to-code
super do |set|
set.draw do
get 'application_controller_test/test', to: 'application_controller_test/test#index'
end
yield
end
end
test 'current_user helper exists in view context' do
assert_respond_to @controller.view_context, :current_user
end
test 'current_user returns value from controller' do
with_routing do
# set up your session, perhaps
user = User.create! username: 'testuser'
session[:user_id] = user.id
get :index
assert_equal user.id, @controller.view_context.current_user.id
end
end
end