【问题标题】:Stubbing Devise in rSpec and Rails3rSpec 和 Rails3 中的存根设计
【发布时间】:2010-08-02 11:58:52
【问题描述】:

你会如何在 Rails 3 中使用 rSpec 存根 Devise。我有一个UsersController 和一个User 模型。目前,这两者都与 Devise 相关,我正在编写控制器规格,我真的很难达到我的期望,因为 Devise sign_in 真的阻碍了工作。

任何事情都会有所帮助。

【问题讨论】:

标签: rspec ruby-on-rails-3 rspec2


【解决方案1】:

我发现现在很容易做到这一点。 rspec2 和设计存在问题,但现在已解决。我想你需要更新你的宝石。然后就可以写了

require 'spec_helper'

describe DoStuffController do
  include Devise::TestHelpers

  before (:each) do
    @user = Factory.create(:user)
    sign_in @user
  end

  describe "GET 'index'" do
    it "should be successful" do
      get 'index'
      response.should be_success
    end
  end
end

[更新] 在设计 wiki 上现在有一个详细的(可能是最新的)description

【讨论】:

  • 作为对可能遇到此问题的其他人的说明。如果您使用确认,请确保您的工厂定义 :confirmed_at 或者您将其传入。
  • devise wiki 上有对此的详细描述:github.com/plataformatec/devise/wiki/…
  • @KevinBedell,该 URL 几乎是正确的 - 它缺少最后一个 ')'。因此,正确的 URL 是 this
  • 我也修复了帖子中的网址。
  • 最好不要在控制器测试中触及数据库……有没有办法模拟这种行为而不是实际创建 activerecord 对象?
【解决方案2】:

您可以尝试模拟设计所依赖的底层守望者 (https://github.com/wardencommunity/warden/wiki) 对象,这里是有关如何使用 RSpec 完成此操作的一些详细信息的链接:http://www.michaelharrison.ws/weblog/?p=349(条目还涵盖了一些其他主题,您想要的解决方案位于页面底部。)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 2019-02-16
  • 2012-12-29
相关资源
最近更新 更多