【发布时间】:2021-05-20 16:03:01
【问题描述】:
我正在为 data_session_helper_spec 文件编写规范测试,该文件如下所示:
data_session_helper_spec.rb
describe "#methods" do
let(:data_session1) { create(:data_session) }
let(:data_session2) { create(:data_session) }
let(:data_session3) { create(:data_session) }
describe "#collect_sessions_with_today_if_needed" do
let!(:team) { create(:program_team, data_sessions: [data_session2, data_session3]) }
let!(:current_user) { create(:user) }
it "returns an array with all the data sessions :team" do
session[:current_program_team_id] = team.id
expect(collect_sessions_with_today_if_needed)
.to contain_exactly(["Today", 0],
[data_session_label(data_session2).to_s, data_session2.id],
[data_session_label(data_session3).to_s, data_session3.id])
end
end
...
end
方法 collect_sessions_with_today_if_needed 在 DataSessionHelper 文件中声明,如下所示:
data_session_helper.rb
module DataSessionHelper
def collect_sessions_with_today_if_needed
collection = DataSession.by_team(current_program_team)
.where("data_sessions.session_date <= ?", Time.zone.now.to_date)
.order(session_date: :desc).selector_data.map { |session| [data_session_label(session), session.id] }
if DataSession.find_by(session_date: Date.current, program_team: current_program_team, user: current_user).present?
collection
else
collection.unshift(["Today", 0])
end
end
...
end
当我尝试为 data_session_helper_spec 运行 rspec 时,我收到一个错误,即 current_program_team 未定义并且该方法已在 ApplicationController 中定义。
application_controller.rb
class ApplicationController < ActionController::Base
helper_method :current_program_team
def current_program_team
ProgramTeam.friendly.find_by(id: session[:current_program_team_id])
end
在为帮助程序运行规范时如何访问应用程序控制器方法?
【问题讨论】:
标签: ruby-on-rails ruby rspec controller helper