【发布时间】:2009-11-27 01:09:50
【问题描述】:
我正在尝试在我的 rails 2.3.4 应用程序上测试路线。有几个网站解释了如何测试路线,包括 rails 文档,但按照说明操作时出现错误。
首先,我假设这些测试可以在相关的单元测试文件中完成。似乎没有更明显的地方,也没有文档指定。
也就是说,这是test/unit/TitlesTest.rb的精简版
require File.dirname(__FILE__) + '/../test_helper'
class TitleTest < Test::Unit::TestCase
# include ActionController::Assertions::RoutingAssertions
def test_routes
assert_routing "games", { :controller => "titles", :section => "games", :action => "index", :id => nil }
end
end
rake test:units 失败并出现错误:
NoMethodError: undefined method `assert_routing' for #<TitleTest:0x7f387232ec98>
/test/unit/title_test.rb:7:in `test_routes'
我在 Rails API 中看到 assert_routing 是在 ActionController::Assertions::RoutingAssertions 中定义的,所以我尝试包含该模块,结果却让它在其他地方失败。
注意上面代码示例中注释的include 行。
NoMethodError: undefined method `clean_backtrace' for #<TitleTest:0x7fd895fadf00>
/test/unit/title_test.rb:7:in `test_routes'
clean_backtrace 是 ActionController::TestCase::Assertions 中定义的另一种测试方法。
我没有得到任何关于这些错误的谷歌搜索结果 - 似乎没有其他人遇到这个问题。如果我在新生成的 rails 应用程序中重新创建场景,也会出现问题。我认为我不应该在我的测试用例中包含这些模块。这里可能有什么问题?
【问题讨论】:
-
你试过包含 ActionController::TestCase::Assertions 吗?
-
在包含 ActionController::TestCase::Assertions 之后,它似乎工作了。我不认为我应该添加这些包含是正常的。
-
我也尝试从 ActiveSupport::TestCase 继承而不是 Test::Unit::TestCase,但我仍然需要包含手册。
标签: ruby-on-rails unit-testing routes integration-testing