Я новичок и пытаюсь изучить Rails с помощью книги Agile Web Development with Rails, Fourth Edition (для Rails 3.2). Пока удалось пройти все главы без задержек. Если были ошибки, то это обычно был мой неаккуратный код (забытая запятая, выражение «конец» и т. д.). Но теперь я столкнулся с проблемой в главе о модульном тестировании моделей. В той части, где мы проверяем, что URL-адрес изображения заканчивается на .gif, .jpg или .png.
Я дословно скопировал код из книги для файла depot/test/product_test.rb:
test "image url" do
ok = %w{ fred.gif fred.jpg fred.png FRED.JPG FRED.Jpg http://a.b.c/x/y/z/fred.gif }
bad = %w{ fred.doc fred.gif/more fred.gif.more }
ok.each do |name|
assert new_product(name).valid?, "#{name} shouldn't be invalid"
end
bad.each do |name|
assert new_product(name).invalid?, "#{name} shouldn't be valid"
end
Но когда я запускаю команду rake test:units, я получаю следующую ошибку...
1) Failure:
test_image_url(ProductTest)[../depot/test/unit/product_test.rb:46]:
fred.gif shouldn't be invalid
4 tests, 13 assertions, 1 failures, 0 errors, 0 skips
rake aborted!
Означает ли это, что URL-адрес тестируемого изображения недействителен? Почему тест не проходит, если то, что он говорит «fred.gif не должен быть недействительным», верно?
Я почти уверен, что именно эта часть теста должна быть неверной, потому что другие тесты, которые у меня есть (например, «атрибуты продукта не должны быть пустыми», «цена продукта должна быть положительной» и т. д.) работают нормально . У меня не будет сбоев, если я удалю блок кода «URL-адрес тестового изображения».
Пожалуйста, дайте мне знать, что я делаю неправильно. Если вам нужно, чтобы я опубликовал весь ProductTest, я могу.
ОБНОВЛЕНИЕ. В моей модели продуктов была опечатка, которая приводила к сбою теста. Теперь все исправлено.