告诉RSpec查看规范使用哪条路线?

时间:2015-10-15 12:21:25

标签: ruby-on-rails rspec views

我想指定一个我在几种情况下使用的视图。

对于当前规范,视图通常在project_boilerplate_copy_path(@project, @boilerplate_copy)下调用,结果为/projects/123/boilerplatecopies/321/

我现在不确定如何告诉视图规范使用该路由。

require 'rails_helper'

RSpec.describe "boilerplates/show", type: :view do
  context 'with findings' do
    it "Doesn't render empty url" do
      assign :boilerplate, create(:boilerplate_copy, findings: [create(:finding, url: nil)])
      render
      expect(rendered).not_to have_selector('.url')
    end
  end
end

这导致:

Failure/Error: render
ActionView::Template::Error:
  No route matches {:action=>"index", :controller=>"boilerplate_copies", :locale=>:en}

我试图摆弄RSpec.describe "boilerplates/show",但这还没有成功。

以下是我的路线:

scope '(:locale)', locale: /en|de/ do
  # ...

  resources :projects do
    resources :boilerplate_copies
  end

  # ...
end

1 个答案:

答案 0 :(得分:0)

正在呈现模板时发生故障,如消息所示:

Failure/Error: render

至于它失败的原因,我的猜测是模板正在使用帮助程序生成路径/ url,并且帮助程序正在尝试根据错误消息生成/boilerplate_copies的路径:< / p>

ActionView::Template::Error:
  No route matches {:action=>"index", :controller=>"boilerplate_copies", :locale=>:en}

应该生成/projects/:project_id/boilerplate_copies的路径,因为您的routes.rb定义了需要:project_id的嵌套资源。没有看到模板,很难说更多。