Они, кажется, не доступны от ActionView:: TestCase
Верно, вспомогательные методы не отображаются в тестах представления - но они могут быть протестированы в ваших функциональных тестах. А поскольку они определены в контроллере, это подходящее место для их тестирования. Ваш вспомогательный метод, вероятно, определен как private
, поэтому вам придется использовать метапрограммирование Ruby для вызова метода.
app / controllers / posts_controller.rb:
class PostsController < ApplicationController
private
def format_something
"abc"
end
helper_method :format_something
end
test /function / posts_controller_test.rb:
require 'test_helper'
class PostsControllerTest < ActionController::TestCase
test "the format_something helper returns 'abc'" do
assert_equal 'abc', @controller.send(:format_something)
end
end
На самом деле это не так. Тесты просмотра предназначены специально для представлений. Они не загружают контроллеры.
Вы должны издеваться над этим методом и заставить его возвращать все, что вам подходит, в зависимости от вашего контекста.