Rspec2 如何在spec_helper中使用mock_模型(用于Authlogic)

Rspec2 如何在spec_helper中使用mock_模型(用于Authlogic),rspec2,Rspec2,我正在升级到rails 3和rspec 2 我的spec\u助手中出现错误“undefined method`mock\u model'”。我当前的用户方法为authlogic设置了一个模拟用户,并生成了这个错误 我的等级库助手看起来像这样 require 'authlogic/test_case' require 'shoulda' require 'helpers' Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require

我正在升级到rails 3和rspec 2

我的spec\u助手中出现错误“undefined method`mock\u model'”。我当前的用户方法为authlogic设置了一个模拟用户,并生成了这个错误

我的等级库助手看起来像这样

require 'authlogic/test_case'
require 'shoulda'
require 'helpers'

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
Dir[Rails.root.join("spec/factories/**/*.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
end

module LoginHelper
   include Authlogic::TestCase

   def login_user person
     activate_authlogic
     UserSession.create(...)
   end
end
include LoginHelper


def current_user(stubs = {})
  @current_user ||= mock_model("User", stubs)
end

def user_session(stubs = {}, user_stubs = {})
  @current_user ||= mock_model(UserSession, {:user => current_user(user_stubs)}.merge(stubs))
end

def login(session_stubs = {}, user_stubs = {})
  UserSession.stub!(:find).and_return(user_session(session_stubs, user_stubs))
end

def logout
  @user_session = nil
end
在rspec2的
rspecrails
gem中定义。如果您将
rspec-rails
添加到您的gem文件中,那么它应该自动包括在内,以便与所有其他必需的rspec-2 gem一起使用

您还应该注意到,
mock_model
不能与UserSession一起使用,因为它继承自
Authlogic::Session::Base
,而不是
ActiveModel
。您可以通过在UserSession模型中添加以下内容来解决此问题:

class UserSession
我也收到了同样的错误。Gemfile确实有
rspec rails
,版本是2.6.4。我发现了您所说的关于在UserSession上不使用mock_模型的内容。我最终使用了double(“UserSession”),而不是更改UserSession定义。mock(“UserSession”)也起了作用。