2009-08-19 4 views
1

Я работаю на рельсах с rspec, rspec-rails, огурцом и webrat. Я пытаюсь узнать BDD и тестирование в целом. У меня есть сценарий, огурец, как это:Огурец: рельсы динамические не работают в paths.rb

Scenario: Questions List 
    Given quiz titled "Pearl Jam" has questions named "Corduroy, Dissident" 
    When I go to the experiment page for quiz titled "Pearl Jam" 
    Then I should see "Corduroy" 
    And I should see "Dissident" 

Я alrady добавленного шага 1, где я создавать и сохранять викторины правильно (я проверил через путы). Сейчас я работаю на шаге 2. Я добавляю новый путь в paths.rb

when /^the experiment page for quiz titled "(.*)"$/i 
    new_quiz_experiment_path(Quiz.find_by_title($1)) 

По какой-то причине find_by_title не работает. Я получаю это сообщение об ошибке:

new_quiz_experiment_url failed to generate from {:quiz_id=>nil, :action=>"new", :controller=>"experiments"}, expected: {:action=>"new", :controller=>"experiments"}, diff: {:quiz_id=>nil} (ActionController::RoutingError) 

Я уверен, что запись есть и правильно сохранена; если я ввожу

puts Quiz.find(1).title 

Я получаю «Жемчужное варенье». Похоже find_by не работает, что довольно странно, так как огурец генерироваться файл содержит следующий пример:

# when /^(.*)'s profile page$/i 
    #  user_profile_path(User.find_by_login($1))  

Я также попробовал проще найти первую с условиями, он не работает.

Любая идея?

Спасибо заранее,
Давиды

+1

Попробуйте использовать "find_by_title!" с восклицательным знаком в конце. Это может привести к более описательному сообщению об ошибке. – ryanb

+0

Идеальный совет. Я получил «Не удалось найти Викторину с названием = Pearl Jam»; следуя подсказке, я понял, что я проанализировал предыдущий шаг непоследовательно, сохранив имя как «Pearl Jam» (с кавычками); это объясняет, почему я не нашел записи. Благодаря! – nutsmuggler

+0

Кроме того, теперь я понимаю, что вы Райан из рельсовых передач. Эти тестовые примеры, которые были смоделированы после введения огурца, поэтому ваш отзыв был вполне уместным и своевременным! Еще раз спасибо, также за отличную работу на рельсах! – nutsmuggler

ответ

1

Благодаря предложение ryanb, я был в состоянии найти ошибку, которая была в

Given quiz titled "Pearl Jam" has questions named "Corduroy, Dissident" 

В основном я разобранный этот шаг inconsisetntly; Я вставил кавычки в 1-м регулярное выражение, так что плитка был сохранен как

"Pearl Jam" 

Я предполагаю, что я lerned две вещи:

  • быть осторожными с кавычками в шаге определения
  • используйте дополнительный код ! для более выразительных сообщений об ошибках.
+0

Спасибо! Этот вопрос преследовал меня, и у меня была такая же проблема. –

 Смежные вопросы

  • Нет связанных вопросов^_^