Ruby on rails Rails测试单元:如何为模型查找未使用的id

Ruby on rails Rails测试单元:如何为模型查找未使用的id,ruby-on-rails,testing,Ruby On Rails,Testing,当使用外键测试模型时,我想断言不能使用不存在的外键保存模型 用于测试的示例类: 因此,单元测试如下所示: def test "a wheel must belong to an existent car" @wheel = Wheel.new @wheel.car_id = INEXISTENT_CAR_ID assert !@wheel.save end 找到一个有效的不存在的车ID(知道装置加载了随机ID)的最佳方法是什么?最好的方法是安排它,以便装置或模拟装置实际

当使用外键测试模型时,我想断言不能使用不存在的外键保存模型

用于测试的示例类:

因此,单元测试如下所示:

def test "a wheel must belong to an existent car"
    @wheel = Wheel.new
    @wheel.car_id = INEXISTENT_CAR_ID
    assert !@wheel.save
end

找到一个有效的不存在的车ID(知道装置加载了随机ID)的最佳方法是什么?

最好的方法是安排它,以便装置或模拟装置实际具有您可以控制的ID。如果你使用factorygirl,你可以说:

 @car1 = Factory(:car, :id => 1) 
 @car2 = Factory(:car, :id => 2)

因此,您确定在测试数据库中只有2个ID,1和2。通过这种方式,您可以设置一个id为3的轮子,然后它不应该保存。

不确定是否有更简单的方法,但您可以选择:

@wheel.car_id = Car.find(:last, :order => :id).id + 1

我喜欢乔利特的方法。但如果根本没有记录,它就失败了,所以您可能需要编写

@wheel.car_id = Car.order("id").last.try(:id).to_i + 1

我希望只使用rails测试框架来找到答案。
@wheel.car_id = Car.order("id").last.try(:id).to_i + 1