Rails3.0.9アプリでbartt-ssl_requirementを使用しています。
コントローラの上部にあるssl_requiredステートメントとssl_allowedステートメントが、リダイレクトでrspecを壊しています。どうすれば修正できますか?
突っ込んでから、spec_helper.rbのssl_requiredメソッド(私には完全には理解していない新しい概念)を「スタブ」して、リダイレクトを行わずにtrueを返すことができます。
Gemfile(関連):
gem 'rails', '3.0.9'
gem 'bartt-ssl_requirement', '~>1.4.0', :require => 'ssl_requirement'
group :test do
gem 'rspec-rails', '2.6.1'
gem 'spork', '0.9.0.rc8'
end
コントローラ:
class PagesController < ApplicationController
ssl_required :about
def about
@title = "About Us"
end
end
spec_helper.rb:
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :rspec
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.before(:each, :type => :controller) do
controller.stub(:ssl_required).and_return(:true)
end
end
end
コントローラでssl_requiredをコメントアウトすると、テストに合格します。そうでなければ、彼らはまだ私のはずをリダイレクトして台無しにしています。