use*_*833 7 minitest devise ruby-on-rails-4
我想使用Minitest(minitest-rails)来测试一个辅助方法- 但是辅助方法依赖于current_user一个可用于控制器和视图的Devise辅助方法.
应用程序/佣工/ application_helper.rb
def user_is_admin? # want to test
current_user && current_user.admin?
end
Run Code Online (Sandbox Code Playgroud)
测试/助理/ application_helper_test.rb
require 'test_helper'
class ApplicationHelperTest < ActionView::TestCase
test 'user is admin method' do
assert user_is_admin? # but current_user is undefined
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,我能够测试不依赖的其他帮助方法current_user.
blo*_*age 12
在Rails中测试帮助程序时,帮助程序包含在测试对象中.(测试对象是ActionView :: TestCase的一个实例.)您的帮助器user_is_admin?方法期望命名的方法current_user也存在.在控制器和view_context对象上,此方法由Devise提供,但它不在您的测试对象上.我们来添加它:
require 'test_helper'
class ApplicationHelperTest < ActionView::TestCase
def current_user
users :default
end
test 'user is admin method' do
assert user_is_admin?
end
end
Run Code Online (Sandbox Code Playgroud)
返回的对象current_user取决于您.在这里,我们返回了一个数据夹具.您可以在此处返回任何在测试环境中有意义的对象.
| 归档时间: |
|
| 查看次数: |
4124 次 |
| 最近记录: |