当前位置:  开发笔记 > 编程语言 > 正文

设置局部变量rspec助手

如何解决《设置局部变量rspec助手》经验,为你挑选了1个好方法。

我正在尝试通过rspec在视图助手中设置局部变量。我的例行如下

def time_format(time)
    now = Time.now.in_time_zone(current_user.timezone)
end

我的规格文件如下:

it 'return 12 hour format' do
      user = User.first
      assign(:current_user, user)
      expect(helper.time_format(900)).to eq('9:00 AM')
end

规范失败并抛出错误未定义的局部变量或方法“ current_user”

“ current_user”驻留在application_controller中



1> K M Rakibul ..:

问题

您的current_user方法在rspec测试中不可用。这就是为什么您遇到上述错误。

您可以current_user在测试助手中实现方法,然后在测试中使用该方法,也可以current_user像这样在规范测试中存根:

let(:user) { User.new }

# RSpec version >= 3 syntax:
before { allow(controller).to receive(:current_user) { user } }
before { allow(view).to receive(:current_user) { user } }

# RSpec version <= 2 syntax:
before { controller.stub(:current_user) { user } }
before { view.stub(:current_user) { user } }

这应该可以解决您的问题。

另外,如果您使用devise进行身份验证,那么我建议您看一下:如何:使用Rails 3和4(和RSpec)测试控制器。

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有