Когда я проверяю значение атрибута целочисленной модели с помощью assert_equal, возвращаемое значение является строкой.
Я запускаю интеграционный тест, в котором я обновляю экземпляр модели, а затем проверяю экземпляр модели, чтобы убедиться, чтозначения были изменены.
таблица базы данных:
create_table :launches do |t|
...
t.integer :result
...
t.timestamps
end
модель:
validates :result, presence: true, numericality: { only_integer: true, greater_than: 0 }
Вот тест:
@launch.reload
assert_equal 2, @launch.result
ион выдает эту ошибку:
test_edit_a_launch#LaunchesNewAndEditTest (0.99s)
Expected: 2
Actual: "2"
test/integration/launches_new_and_edit_test.rb:57:in `block in <class:LaunchesNewAndEditTest>'
Значения возвращаются в виде строки, и сравнение с целым числом завершается неудачно.Если я изменю тест на:
@launch.reload
assert_equal 2, @launch.result.to_i
, он будет работать.Но это не имеет никакого смысла и должно сравнивать целочисленное значение в модели с ожидаемым целочисленным результатом.Когда я манипулирую объектом в консоли rails, значение является целым числом.