我正在为我的控制器编写rspec测试,并尝试测试部分渲染,当动作由AJAX请求触发时。
在我的控制器代码中,我有:
def new
...
respond_to do |format|
format.html { render action: "new" }
format.js { }
end
end
我将文件new.html.erb
和new.js.erb
放置在正确的视图目录中。
我的rspec测试如下:
it "should render the new partial" do
get :new, :format => 'js'
response.should render_template(:partial => 'new')
end
执行此rspec测试时,我收到以下错误:
Failure/Error: response.should render_template(:partial => 'new')
expecting partial <"new"> but action rendered <[]>
有人可以解释为什么我会收到此错误吗?我做错了什么?
谢谢
答案 0 :(得分:4)
根据rails指南,语法略有不同:
您的测试应该是这样的:
it 'assigns instance of Item to @item and renders new.js.erb' do
xhr :get, :new, format: :js
expect(assigns[:item]).to be_an_instance_of Item
expect(response).to render_template('new')
end
您的控制器看起来像:
class ItemsController < ApplicationController
def new
@item = Item.new
end
end
您的视图将是.js.erb文件
items/new.js.erb