我正在努力确定我为何真正起作用的理解 我的应用程序只是本实验目的的默认支架。
it "creates a record and redirects with success notice" do
Project.any_instance.stubs(:valid?).returns(true) #ensure action behaves as if @project was valid
post :create, :format => :js
assigns(:project).errors.should be_empty #ensures that @project has no errors
flash[:notice].should_not be_nil #ensure a flash notice is set
response.should redirect_to(projects_path) #ensure appropriate redirection
end
end
在控制器中,在@project上调用save方法。这是我不确定的地方。该对象将保存,因为有效?方法已被存根以返回true,即使该对象无效。但是如果对象无效,保存怎么会成功?
答案 0 :(得分:0)
Rails在保存之前也在内部调用你的valid?
存根,因此它会正常进行保存,因为它认为没有错。
另一方面,如果您在MySQL数据库中的某个字段上有一个UNIQUE索引,那么重复的行仍然可能会阻止保存该记录,即使您存根valid?
。两个可能的验证层。