如何避免此错误:
Error: test_update_location(LocationControllerTest)
NoMethodError: undefined method `show_previous_version' for test_update_location(LocationControllerTest):LocationControllerTest/usr/local/rvm/gems/ruby-1.9.3-p327/gems/actionpack-2.1.1/lib/action_controller/test_process.rb:467:in `method_missing'
我想测试show_previous_version
中定义的辅助方法app/helpers/description_helper.rb
:
def show_previous_version(obj)
...
return html
end
在app/helpers/application _helper.rb
:
module ApplicationHelper
.....
require_dependency 'description_helper'
...
end
在test/functional/location_controller_test.rb
def test_update_location
...
loc = Location.find(loc.id)
html = show_previous_version(loc)
...
end
当我运行测试时,我得到:
Error: test_update_location(LocationControllerTest)
NoMethodError: undefined method `show_previous_version' for test_update_location(LocationControllerTest):LocationControllerTest/usr/local/rvm/gems/ruby-1.9.3-p327/gems/actionpack-2.1.1/lib/action_controller/test_process.rb:467:in `method_missing'
答案 0 :(得分:0)
Helper方法可用于控制器实例,而不是测试本身。要么直接在测试中包含帮助程序(凌乱),要么使用控制器(或包含帮助程序的其他对象)来调用该方法。
要使用控制器进行测试,可以在ActionController::TestCase
中使用@controller实例变量:
class LocationControllerTest < ActionController::TestCase
def test_update_location
...
loc = Location.find(loc.id)
html = @controller.show_previous_version(loc)
...
end
end