Извиняюсь заранее, я довольно новичок в рельсах.Создавая сайт для демонстрации кулинарных рецептов, у меня есть функциональный тест для моей домашней страницы и моей страницы рецептов, и оба они терпят неудачу.С досадой они проходили, потом я что-то делал, а теперь они терпят неудачу.Похоже, что тесты не могут как-то загрузить приборы.
Сосредоточившись исключительно на тесте «должен получить шоу» из ресурса рецепта, тест, который не пройден, находится здесь;
class RecipesControllerTest < ActionController::TestCase
setup do
@recipe = recipes(:spag_bol)
end
test "should get show" do
get :show, :id => @recipe.to_param
assert_not_nil assigns(:recipe)
assert_equal @recipe.name, assigns(:page_title)
assert_tag :h1, :content => assigns(:page_title)
assert_tag :p, :content => @recipe.excerpt
assert_tag :h2, :content => "Ingredients"
assert_select "#ingredients li", @recipe.ingredients.lines.count
assert_tag :h2, :content => "Method"
assert_select "#method li", @recipe.method.lines.count
assert_template :show
assert_response :success
end
end
приспособление для этого теста здесь;
spag_bol:
id: 1
name: "Spaghetti Bolognaise"
excerpt: "Test test test."
serves: "2"
preparation_time: "30 minutes"
cooking_time: "1 hour"
method: "Test test test\ntest test test."
ingredients: "Test test test\ntest test test."
Ошибка на самом деле не является ошибкой, это ошибка;
RecipesControllerTest:
ERROR should get show (0.02s)
ActionView::Template::Error: undefined method `name' for nil:NilClass
/Users/Laura/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/whiny_nil.rb:48:in `method_missing'
Очень похоже, что тест не загружает прибор - может кто-нибудь объяснить мне, почему?
РЕДАКТИРОВАТЬ (ОБЪЯСНЕНИЕ РЕШЕНИЯ)
Вместо реального кода, я имел обыкновение просто иметь ссылки на мое git-репо выше.Как указывает Райан ниже, если я сделаю ссылку на основную ветку, то через несколько недель кому-то будет нехорошо, если они найдут этот вопрос, поэтому ссылки исчезнут и будут заменены кодом.По иронии судьбы, это показывает, где я ошибался!Я был убежден, что проблема была вызвана следующей строкой в тесте:
assert_equal @recipe.name, assigns(:page_title)
Поскольку это единственная ссылка, которая ссылается на метод "name", а сообщение об ошибке очень сильно напоминает егоприспособление не возвращало рецепт.На самом деле, так и было, и моя индексная страница фактически выдавала РЕАЛЬНУЮ ошибку, потому что у КАТЕГОРИИ не было имени.Этого не произошло, когда я фактически запустил приложение, потому что моя среда разработки заполнила все эти данные, что еще раз убедило меня, что проблема была в тестах, а не в коде.
Итак, урок усвоен: еслине похоже, что есть проблема с вашими функциональными тестами, тогда ошибка может быть вызвана вашими контроллерами или представлениями по какой-то другой причине, не связанной с тем, что вы пытаетесь протестировать.