我正在尝试编写一个测试验证我的控制器的操作。手动测试时,代码按预期执行。但是,我的测试引发了一个错误,因为它无法找到我试图渲染的模板。
我的控制器代码片段:
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"。
为什么测试找不到部分?我怀疑设置问题
提前致谢。
答案 0 :(得分:1)
当你正在做一个json请求时,render_to_string
正在寻找一个json模板。试试这个:
render_to_string :partial => "data_source", :formats => [:html], :locals => {:data_source => @data_source}