首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试rails路由:找不到ActionController::Assertions::RoutingAssertions方法

测试rails路由:找不到ActionController::Assertions::RoutingAssertions方法
EN

Stack Overflow用户
提问于 2009-11-27 09:09:51
回答 3查看 2.4K关注 0票数 2

我正在尝试在我的rails 2.3.4应用程序上测试路由。有几个网站解释了如何测试路由,包括rails文档,但我根据说明收到了错误。

首先,我假设这些测试可以在相关的单元测试文件中完成。似乎没有更明显的地方,也没有任何文档指定。

也就是说,这是test/unit/TitlesTest.rb的一个精简版本

代码语言:javascript
复制
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失败,并显示以下错误:

代码语言:javascript
复制
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行。

代码语言:javascript
复制
NoMethodError: undefined method `clean_backtrace' for #<TitleTest:0x7fd895fadf00>
    /test/unit/title_test.rb:7:in `test_routes'

clean_backtrace是ActionController::TestCase::Assertions中定义的另一个测试方法。

我没有得到任何关于这些错误的谷歌搜索结果--似乎没有其他人有这个问题。如果我在新生成的rails应用程序中重新创建场景,也会出现问题。我不认为我应该在我的测试用例中包含这些模块。这里可能出了什么问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-12 01:33:16

在巨人机器人上有一份upgrading Rails gotchas的名单。显然,您的路由测试应该使用类ActionController::TestCase,而不是ActiveSupport::TestCase

票数 5
EN

Stack Overflow用户

发布于 2009-11-28 22:56:51

路由测试应该作为集成测试的一部分进行。

这些可以使用script/generate script/generate integration_test routes生成

举个例子:

代码语言:javascript
复制
class RoutesTest < ActionController::IntegrationTest
  fixtures :all

  def test_resources_route
    assert_routing "titles/15", { :controller => "titles", :action => "show", :id => "15" }
  end
end
票数 5
EN

Stack Overflow用户

发布于 2009-11-27 17:43:05

从Rails 2.3.2开始,您的路由单元测试文件必须包含ActionController::Assertions::RoutingAssertions模块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1806351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档