使用外键测试模型时,我想断言模型不能用不存在的外键保存。
测试示例类:
class Wheel
belongs_to: car
end
因此,单元测试看起来像这样:
def test "a wheel must belong to an existent car"
@wheel = Wheel.new
@wheel.car_id = INEXISTENT_CAR_ID
assert !@wheel.save
end
找到有效的INEXISTENT_CAR_ID的最佳方法是什么(知道灯具加载了随机ID)?
答案 0 :(得分:1)
不确定是否有更简单的方法,但你可以选择:
@wheel.car_id = Car.find(:last, :order => :id).id + 1
答案 1 :(得分:1)
我喜欢Chowlett的做法。但它失败了,如果根本没有记录,那么你可能想写
@wheel.car_id = Car.order("id").last.try(:id).to_i + 1
答案 2 :(得分:0)
最好的方法是安排它,以便你的灯具或你的模拟实际上有你可以控制的ID。如果你使用的是女工,你可以说:
@car1 = Factory(:car, :id => 1)
@car2 = Factory(:car, :id => 2)
所以你确定在你的测试数据库中你只有2个ID,1和2.这样你就可以设置给定id为3的Wheel,那么就不应该保存。