功能测试无法找到模板

时间:2014-04-29 01:00:20

标签: ruby-on-rails

我正在尝试编写一个测试验证我的控制器的操作。手动测试时,代码按预期执行。但是,我的测试引发了一个错误,因为它无法找到我试图渲染的模板。

我的控制器代码片段:

response = {:success => true}

response[:html] = {}
response[:html][:list] = render_to_string :partial => "data_source", :locals => {:data_source => @data_source}

respond_to do |format|
  format.json {render :json => response}
end

我的测试:

before do
  @data_source = FactoryGirl.create :data_source, :facebook_fan_page, :account_id => @account.id, :user_id => @user.id
  post :delete, :format => :json, :id => @data_source.id
end

it "should disable the data source" do
  assert_equal false, @data_source.reload.enabled?
end

错误消息:

  

ActionView :: MissingTemplate:缺少部分data_sources / data_source,   使用{:locale => [:en]捕获/ data_source,application / data_source,   :formats => [:json] ,: handlers => [:erb,:builder,:haml]}。搜索:
  *" / Users / me / code / my_app / app / views" *" /Users/me/code/my_app/vendor/bundle/ruby/1.9.1/gems/konacha-3.0.0/app/views"   从   /Users/me/code/my_app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.17/lib/action_view/path_set.rb:58:in   `找到'

app / view / data_sources目录中肯定存在部分" _data_source.html.haml"。

为什么测试找不到部分?我怀疑设置问题

提前致谢。

1 个答案:

答案 0 :(得分:1)

当你正在做一个json请求时,render_to_string正在寻找一个json模板。试试这个:

render_to_string :partial => "data_source", :formats => [:html], :locals => {:data_source => @data_source}