我在这里错过了什么?我有一个非常基本的更新功能的控制器测试
context "where all is not well" do
before do
allow(mpu_instance).to receive(:save).and_return(false)
patch :update, centre_id: venue_instance, id: 1
end
it "flashes an error" do
expect(flash[:error]).to_not be_nil
end
it " renders edit form again" do
expect(response).to render_template('admin/mpus/new')
end
所以在这个块中我将保存函数存根以返回false
def update
@mpu.update_attributes(params[:mpu])
if @mpu.save
flash[:notice]="changes saved"
return redirect_to(edit_admin_centre_path(@mpuable))
else
flash[:error]="Check for errors"
return redirect_to("admin/mpus/new")
end
end
为什么它会失败!?
Failure/Error: expect(response).to render_template('admin/mpus/edit')
expecting <"admin/mpus/edit"> but rendering with <[]>
Failure/Error: expect(flash[:error]).to_not be_nil
expected: not nil
got: nil
我无法看到对此的逻辑解释,因为我存根失败的所有其他测试都以正确的方式执行。我不明白这个有什么不同吗?
我正在通过工厂女孩创建实例,因此'mpu_instance'
为FactoryGirl.create :mpu_instance