【问题标题】:testing nested routes with rspec使用 rspec 测试嵌套路由
【发布时间】:2011-08-21 08:01:46
【问题描述】:

我正在尝试使用 rspec 测试路线。下面给出了“期望块返回真值”的错误。

我不确定我错过了什么。通过浏览器我可以发布到这个 url 并且它是成功的。

有什么想法吗?谢谢!

路线

resources :forum_topics do
  resources :forum_sub_topics
end

测试:

it "recognizes and generates nested #create" do
  { :post => "/forum_topics/1/forum_sub_topics" }.should route_to(:controller => "forum_sub_topics", :action => "create", :forum_topic_id => 1)
end

【问题讨论】:

  • 尝试使用-b 选项运行rspec 以获取错误的回溯。
  • 我不认为:forum_topic_id 实际上是一个整数。试试:forum_topic_id => '1'
  • Rob S 有确切的答案,我也会试试 -b 只是为了好玩。
  • 这个答案对我有用:stackoverflow.com/questions/16295721/…

标签: ruby-on-rails rspec routes


【解决方案1】:

我知道这归结为同一件事,但如果您想缩短代码,您也可以这样做:

{ :post => "/forum_topics/1/forum_sub_topics" }.should route_to("forum_sub_topics#create", :forum_topic_id => 1)

我觉得它更容易阅读。

【讨论】:

  • 这实际上对我有用,而不是@recursive_acronym 的答案。递归的答案似乎是看父控制器。无论如何,谢谢你的信息!
【解决方案2】:

没有人正式回答我的问题,所以我会:)

{ :post => "/forum_topics/1/forum_sub_topics" }.should route_to(:controller => "forum_sub_topics", :action => "create", :forum_topic_id => 1)

归结为 :forum_topic_id => 1 不等于 :forum_topic_id => "1" 也许我的 PHP 日子已经悄悄地咬了我一口。字符串和整数:)

【讨论】:

  • 当我这样做时,id (1) 必须是字符串“1”
猜你喜欢
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多