0

我在 Rails 3.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,我的测试就会通过。否则,他们仍在重定向并破坏我的应有之义。

4

1 回答 1

0

好吧,它没有回答我关于如何在 spec_helper.rb 中配置存根的问题,或者这是否是一个好主意,但我需要做的就是添加SslRequirement.disable_ssl_check = true到我的 test.rb 环境中。

于 2012-10-27T17:20:02.630 回答