7

编辑:

我发现如果我在view.lookup_context.prefixes = %w[base]之前插入render,测试知道正确的路径。这是解决这个问题的最佳/正确方法吗?


我将所有部分放在一个基本文件夹中,并且所有有权访问这些部分的控制器都继承自base_controller这一切都很好,但是生成的视图测试无法找到基本文件夹中的部分。

这是错误:

Failure/Error: render
     ActionView::Template::Error:
       Missing partial /admin_menu, circuits/admin_menu with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=>[:erb, :builder, :coffee, :jbuilder]}. Searched in:
         * "/Users/Mac/Folder/ProjectName/app/views"

如何告诉我的视图测试在哪里寻找部分?

为了完整起见,这里是规范:

require 'spec_helper'

describe "circuits/index" do
  before(:each) do
    assign(:circuits, [
      stub_model(Circuit,
        :name => "Name",
        :description => "MyText"
      ),
      stub_model(Circuit,
        :name => "Name",
        :description => "MyText"
      )
    ])
  end

  it "renders a list of circuits" do
    view.lookup_context.prefixes = %w[base application]
    render
    assert_select "tr>td", :text => "Name".to_s, :count => 2
    assert_select "tr>td", :text => "MyText".to_s, :count => 2
  end
end
4

2 回答 2

8

使用部分继承将主题功能添加到我的应用程序时,我遇到了类似的问题。对于 Rails 4,它与编辑后的答案有点不同——我必须在我的视图规范中添加这个:

before do
  view.lookup_context.view_paths.push 'app/views/themes/light'
end

themes/light文件夹包含一些特定于浅色主题的部分。

于 2015-07-29T07:34:29.177 回答
3

你应该使用

<%= render 'base/admin_menu' %>
于 2013-10-10T13:46:05.790 回答