moj*_*ojo 2 ruby rspec ruby-on-rails helper
我正在尝试通过rspec在视图助手中设置局部变量。我的例行如下
def time_format(time)
now = Time.now.in_time_zone(current_user.timezone)
end
Run Code Online (Sandbox Code Playgroud)
我的规格文件如下:
it 'return 12 hour format' do
user = User.first
assign(:current_user, user)
expect(helper.time_format(900)).to eq('9:00 AM')
end
Run Code Online (Sandbox Code Playgroud)
规范失败并抛出错误未定义的局部变量或方法“ current_user”
“ current_user”驻留在application_controller中
您的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 } }
Run Code Online (Sandbox Code Playgroud)
这应该可以解决您的问题。
另外,如果您使用devise进行身份验证,那么我建议您看一下:如何:使用Rails 3和4(和RSpec)测试控制器。
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |