模拟不与RSpec和Devise合作

Aar*_*ron 3 rspec devise ruby-on-rails-3

我正在使用RSpec 2开发Rails 3 Web应用程序,我们正在使用Devise进行身份验证.我们的一个(很快)很多控制器都要求用户登录.我知道Devise提供了sign_in测试助手,但它可以与RSpec或Mocha模拟对象一起使用吗?

我最初尝试过@user = mock_model(User)用户是Devise类的地方.这不是一起工作sign_in :user, @userget 'index'会重定向到登录表单.

有没有人有使用Devise测试的经验并且可以提供帮助?

Nic*_*yce 5

我们有类似的问题,但使用Factory Girl.我们这样解决了:

在spec_helper.rb中:

config.include Devise::TestHelpers, :type => :controller
Run Code Online (Sandbox Code Playgroud)

在控制器规范(只是一个包装方法):

def login_user(user)
    sign_in user
end
Run Code Online (Sandbox Code Playgroud)

然后在您需要的每种方法中,您可以:

login_user(Factory(:user))
Run Code Online (Sandbox Code Playgroud)

...您在factories.rb中定义了一个用户对象.不知道这是否适用于模拟.