【发布时间】:2011-08-15 19:31:22
【问题描述】:
我最近更改了我的控制器代码:
def create
@checklist_item = @checklist.items.build(params[:checklist_item])
if @checklist_item.save
flash[:notice] = "Successfully created checklist item."
redirect_to checklist_item_url(@checklist, @checklist_item)
else
render :action => 'new'
end
end
到
respond_to :html, :json
def create
@checklist_item = @checklist.items.build(params[:checklist_item])
if @checklist_item.save
flash[:notice] = "Successfully created checklist item."
end
respond_with @checklist_item
end
但是我的规范与我以前的控制器代码配合得很好,但失败了:
it "create action should render new template when model is invalid" do
checklist_item.stub(:valid? => false)
checklist.stub_chain(:items, :build => checklist_item)
post :create, :checklist_id => checklist.id
response.should render_template(:new)
end
出现错误:
1) Checklists::ItemsController create action should render new template when model is invalid
Failure/Error: response.should render_template(:new)
MiniTest::Assertion:
Expected block to return true value.
我不确定如何更改规格。当我在浏览器中测试它时,一切功能仍然相同(它呈现新的)。
【问题讨论】:
-
奇怪的是它不渲染节目。你确定它是新的吗?
-
目标是渲染 :new 因为模型无效。通过有效模型的另一个测试工作正常,并且重定向显示没有问题。
标签: ruby-on-rails ruby-on-rails-3 rspec rspec2