Rails测试单元:如何为模型查找未使用的ID

时间:2011-09-13 15:53:11

标签: ruby-on-rails testing

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

测试示例类:

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)?

3 个答案:

答案 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,那么就不应该保存。