我已经建立了一个简单的Rails应用程序,其中包含三个继承自ActiveRecord的类。在测试驱动开发方面,我已经写好了需要测试的类。到目前为止,我编写的所有测试都很顺利。对象被创建、属性正常响应,验证都已经就位。
问题出现在当我在我的创建方法上使用 "!" 时,因为现在对象被一直传递到数据库中。与其它情况下拦截无效输入的正常验证不同,似乎数据库有机会对刺激做出反应。
到目前为止,在运行测试时我收到的错误是:
ActiveRecord::RecordInvalid: Validation failed: Shop is too long (maximum is 11 characters)
我很高兴能得到这个错误,但希望知道如何更好地在我的测试中计划它。产生上述错误的代码是:
it "should not a accept a department with a shopify shop_id that's over 11 chars" do
long_id = "9" * 12
long_id_department = Department.create!(@attr.merge(:id => [long_id, ""]))
long_id_department.should_not be_valid
end
我猜测这行代码应该改成其他形式:long_id_department.should_not be_valid
希望你们能够解释一下应该怎样修改。