Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rSpec和Rails3中的短截线装置_Rspec_Ruby On Rails 3_Rspec2 - Fatal编程技术网

rSpec和Rails3中的短截线装置

rSpec和Rails3中的短截线装置,rspec,ruby-on-rails-3,rspec2,Rspec,Ruby On Rails 3,Rspec2,您将如何使用rSpec在Rails 3中设计存根。我有一个userscoontroller和一个User模型。目前,这两项都与Desive有关,我正在编写控制器规范,我的期望真的很难实现,因为Desive登录确实干扰了工作 任何事情都会有帮助。你可以试着模仿Desive所依赖的底层warden()对象,这里有一个链接,指向一些关于如何使用RSpec实现这一点的详细信息:(条目还包括一些其他主题,你想要的解决方案在页面底部。)我发现现在做这件事很容易。rspec2和Desive存在问题,但现在已解

您将如何使用rSpec在Rails 3中设计存根。我有一个
userscoontroller
和一个
User
模型。目前,这两项都与Desive有关,我正在编写控制器规范,我的期望真的很难实现,因为Desive
登录
确实干扰了工作


任何事情都会有帮助。

你可以试着模仿Desive所依赖的底层warden()对象,这里有一个链接,指向一些关于如何使用RSpec实现这一点的详细信息:(条目还包括一些其他主题,你想要的解决方案在页面底部。)

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

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

[更新]在Devage wiki上,现在有一个详细的(可能是最新的)。

非常感谢!这正是我一直在寻找的。下面的新答案提供了一个更好的方法,就像给可能遇到这个问题的其他人一个提示。如果您使用的是确认,请确保您的工厂定义为:confirfied_at或您将其传入。Desive wiki上对此有详细描述:@KevinBedell,URL几乎正确-它缺少最后一个“')。因此,正确的URL是我在文章中也固定了URL。不过,最好不要在控制器测试中触碰数据库。。。有没有办法模仿这种行为而不是实际创建activerecord对象?使用Deviate,您可以完全删除用户模型: