У меня есть следующий код:Понимание assert_equal в Test :: Unit с Рубином на Rails
test "unique title" do
product = Product.new(title: products(:ruby).title,
description: 'yyy',
price: 1,
image_url: "fred.gif")
assert !product.save
puts product.errors[:title].join('; ')
assert_equal "has already been taken", product.errors[:title].join('; ')
end
тест проходит. Но я не понимаю, почему assert_equal не вызывает ошибку.
Поскольку «уже принято» не равно: ProductTest#test_unique_titlehas already been taken
которого является выходом заявления Кладет.
Зачем проходит этот тест?
Я думаю, что вы сбиты с толку, потому что в вашем выходе нет какой-либо новой строки. 'ProductTest # test_unique_title' описывает метод тестирования, который вы используете, и' уже был принят' является результатом ваших 'puts', поэтому тест должен пройти. – oldergod
Насколько я понимаю, вы должны были дать ему ответ, чтобы я мог наградить вас за репутацию :). Я предполагаю, что тестовая среда автоматически показывает метод, который выполняется при получении любого вывода. – Senjai
Добавил его в качестве ответа, чтобы вы могли его принять и закрыть вопрос. – oldergod