Огурец: динамический поиск рельсов не работает в paths.rb - PullRequest
1 голос
/ 19 августа 2009

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

  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" 

У меня есть добавленный шаг 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

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

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

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

Есть идеи?

Заранее спасибо,
Davide

1 Ответ

1 голос
/ 20 августа 2009

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

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

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

"Pearl Jam"

Полагаю, я выучил две вещи:

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