Rails Test Unit: Как найти неиспользуемый идентификатор для модели - PullRequest
0 голосов
/ 13 сентября 2011

При тестировании модели с внешним ключом, я хотел бы утверждать, что модель не может быть сохранена с несуществующим внешним ключом.

Пример класса для тестирования:

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 (зная, что приборы загружены случайными идентификаторами)?

Ответы [ 3 ]

1 голос
/ 13 сентября 2011

Не уверен, что есть более простой путь, но вы могли бы пойти на:

@wheel.car_id = Car.find(:last, :order => :id).id + 1
1 голос
/ 13 сентября 2011

Мне нравится подход Чоулетта. Но не получается, если вообще нет записи, поэтому вы можете написать

@wheel.car_id = Car.order("id").last.try(:id).to_i + 1
0 голосов
/ 13 сентября 2011

Лучшим способом было бы расположить его так, чтобы на вашем приборе или макете действительно были идентификаторы, которыми вы можете управлять.Скажем, если вы использовали factorygirl, вы можете сказать:

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

, так что вы уверены, что в вашем тестовом БД у вас есть только 2 идентификатора, 1 и 2. Таким образом, вы можете настроить это для данного колеса сидентификатор 3, то он не должен сохранять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...