【发布时间】:2019-11-08 15:16:19
【问题描述】:
在application_controller 中,我有两种方法,我想在maintenance_mode_controller_specs 中进行测试。如何创建将返回 false 的模拟 maintenance_mode_active? 以在 check_maintenance? 中使用它?
application_controller.rb
before_action :check_maintenance?
private
def check_maintenance?
if maintenance_mode_active? == true
redirect_to maintenance_mode
elsif request.fullpath.include?(maintenance_mode_path)
redirect_to :root
end
end
def maintenance_mode_active?
# do sth ...
mode.active?
end
maintenance_mode_controller_spec.rb
context 'when maintenance mode is active' do
let(:maintenance_mode?) { instance_double(ApplicationController) }
before do
allow(ApplicationController).to receive(:maintenance_mode_active?).and_return(false)
end
it 'redirect to root path' do
expect(described_class).should redirect_to(maintenance_mode_path)
end
end
【问题讨论】:
标签: ruby-on-rails ruby rspec