Rspec-view-file不知道我的路由

时间:2011-11-09 07:46:28

标签: ruby-on-rails ruby ruby-on-rails-3 rspec rspec-rails

我是rspec的新手,为View编写了rspec-test并且出现了问题: 测试失败并出现错误:

 Failure/Error: render
 ActionView::Template::Error:
   No route matches {:controller=>"comments", :action=>"create", :format=>nil}

模型的关系很简单:

post has_many :comments
comment belongs_to :post

查看文件:

# app/views/posts/show.html.haml

#postform
  = form_for @comment do |f|
    = f.text_field :name
    = f.submit "Reply"

rspec文件:

# spec/views/posts/show.html.haml_spec.rb
require 'spec_helper'

describe 'posts/show.html.haml' do
  it 'renders the form for a new comment creation' do
    assign(:post, mock_model(Post).as_new_record.as_null_object)
    assign(:comment, mock_model(Comment).as_new_record.as_null_object) 
    render
  end
end

的routes.rb

  post '/:name/comments' => 'comments#create', :as => :comments

应用程序正常运行。但是如果我从routes.rb中删除该行,那么在开发模式下我得到相同的错误:

No route matches {:controller=>"comments", :action=>"create", :format=>nil}

所以我觉得看起来像rspec-view-file不知道我的路由,但我不确定。无论如何,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

rspec视图测试确实知道你的路线,所以imho还有别的错误。查看路线时,我会看到参数:name

你不应该以某种方式指定:name吗?好像它应该指向父帖,不是吗? 所以不太确定这是如何工作的。

似乎你想要做像

这样的事情
= form_for [@post, @comment]

或明确构建网址。