当前位置: 首页 > 知识库问答 >
问题:

curren_userlogin_requiredrspec 3.1导轨

齐雅畅
2023-03-14

我似乎无法将@current_用户存根,以便我的before_filter:login_required通过,并获得正确的模板,而不是重定向到登录屏幕。

这是我的控制器规格:

 before(:each) do
    allow(controller).to receive(:current_user).and_return FactoryGirl.build(:signed_up_user)
  end

  it "index action should render index template" do
    get :index
    expect(response).to render_template(:index)
  end

我相信这是用于存根的较新rspec语法。

下面是一些使用控制器的示例。存根方法,但这似乎不起作用。我只想存根@current_user变量,这样看起来就像用户登录了一样,这样我就可以用实际的控制器规范测试我的控制器了。现在,我只使用功能规范。

我已经研究这个好几周了!

编辑:

我没有用设计。我按照瑞安·贝茨的俏皮风格创建了自己的身份验证:身份验证。

before_filter :login_required


def login_required
  unless current_user
    redirect_to login_path
  end
end

def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end

我只是想为我的控制器测试设置@current_user变量(我想我也可以设置session[:user_id],但也无法让它工作)。这应该允许before_过滤器通过,并允许我测试我的控制器方法。我正在测试特性规范中的身份验证。

共有1个答案

段坚
2023-03-14

我假设您正在使用Desive,在关于rspec测试的wiki上,他们解释了如何添加Desive rspec帮助程序

RSpec.configure do |config|
  config.include Devise::TestHelpers, type: :controller
end

执行此操作后,您可以使用数据库中创建的任何用户登录

let(:user) { FactoryGirl.create(:signed_up_user) }
before :each do
  sign_in user
end

就这样,您现在有了一个登录会话。

 类似资料:
  • 可以将本地文档导入到幕布中,也可以将幕布中的文档导出到本地,支持Word、PDF、HTML、OPML、FreeMind等多种格式。 导入 在文档列表主页面点击「新建」,可以选择导入OPML文件(.opml格式)或者FreeMind文件(.mm格式)。 导出 在文档编辑页面点击右上角「更多」选项: 导出/下载:将该文档导出到本地,支持Word、PDF、HTML、OPML格式; 打印:使用打印机打印该

  • 导出向导 让你从表、视图或查询结果导出数据到任何现有的格式。你可以保存设置成设置文件用作设置计划。注意:Navicat Essentials 只支持导出基于文本的文件,例如 TXT、CSV、HTML、XML 和 JSON 文件。 要打开导出向导,从对象列表工具栏点击 导出向导。 设置导出文件格式(步骤 1) 为目标文件选择一个有效的导出格式。 注意: Excel 文件格式是根据你的计算机里安装的

  • 导入向导 让你从 CSV、TXT、XML、DBF 以及更多格式导入数据到表。你可以保存设置成设置文件用作设置计划。注意:Navicat Essentials 只支持导入基于文本的文件,例如 TXT、CSV、HTML、XML 和 JSON 文件。 要打开导入向导,从表的对象列表工具栏点击 导入向导。 提示:你可以拖曳一个支持的文件到表的对象列表窗格或到连接窗格的一个数据库或模式。Navicat 将会

  • 导出(export)和导入(import)指令有几种语法变体。 在上一节,我们看到了一个简单的用法,现在让我们来探索更多示例吧。 在声明前导出 我们可以通过在声明之前放置 export 来标记任意声明为导出,无论声明的是变量,函数还是类都可以。 例如,这里的所有导出均有效: // 导出数组 export let months = ['Jan', 'Feb', 'Mar','Apr', 'Aug',

  • 导出和导入容器 导出容器 如果要导出本地某个容器,可以使用 docker export 命令。 $ docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NA

  • 我试图从djangotoolbox.fields使用Listfield,但它给我一个错误说: 我做错了什么?