Невозможно заполнить базу данных для запуска сценариев огурца

Я застрял на этом некоторое время, я искал, но не могу понять, почему мой код не работает...

Я изучаю огурец, и мне нужно заполнить базу данных для запуска сценариев.

Это инструкции:

(...) вы создадите определение шага, которое будет соответствовать шагу Given the following movies exist в разделе Background как sort_movie_list.feature, так и filter_movie_list.feature. (Позже в этом курсе мы покажем, как высушить повторяющиеся разделы Background в двух файлах функций.)

Добавьте свой код в файл определения шага movie_steps.rb. Вы можете просто использовать вызовы ActiveRecord для прямого добавления фильмов в базу данных; можно обойти графический интерфейс, связанный с созданием новых фильмов, так как это не то, что тестируют эти сценарии.

Это один из файлов *.feature

Функция: отображение списка фильмов, отфильтрованных по рейтингу MPAA.

 As a concerned parent
  So that I can quickly browse movies appropriate for my family
  I want to see movies matching only certain MPAA ratings

Background: movies have been added to database

  Given the following movies exist:
  | title                   | rating | release_date |
  | Aladdin                 | G      | 25-Nov-1992  |
  | The Terminator          | R      | 26-Oct-1984  |
  | When Harry Met Sally    | R      | 21-Jul-1989  |
  | The Help                | PG-13  | 10-Aug-2011  |
  | Chocolat                | PG-13  | 5-Jan-2001   |
  | Amelie                  | R      | 25-Apr-2001  |
  | 2001: A Space Odyssey   | G      | 6-Apr-1968   |
  | The Incredibles         | PG     | 5-Nov-2004   |
  | Raiders of the Lost Ark | PG     | 12-Jun-1981  |
  | Chicken Run             | G      | 21-Jun-2000  |

Итак, это мой код от *_steps.rb:

Given /the following movies exist/ do |movies_table|
  movies_table.hashes.each do |movie|
    Movie.create!(movie)
  end
  fail "Unimplemented"
end

И это ошибка, которую я получаю:

Background: movies have been added to database # features/sort_movie_list.feature:7
    Given the following movies exist:            # features/step_definitions/movie_steps.rb:3
      | title                   | rating | release_date |
      | Aladdin                 | G      | 25-Nov-1992  |
      | The Terminator          | R      | 26-Oct-1984  |
      | When Harry Met Sally    | R      | 21-Jul-1989  |
      | The Help                | PG-13  | 10-Aug-2011  |
      | Chocolat                | PG-13  | 5-Jan-2001   |
      | Amelie                  | R      | 25-Apr-2001  |
      | 2001: A Space Odyssey   | G      | 6-Apr-1968   |
      | The Incredibles         | PG     | 5-Nov-2004   |
      | Raiders of the Lost Ark | PG     | 12-Jun-1981  |
      | Chicken Run             | G      | 21-Jun-2000  |
      Unimplemented (RuntimeError)
      ./features/step_definitions/movie_steps.rb:7:in `/the following movies exist/'
      features/sort_movie_list.feature:9:in `Given the following movies exist:'

Я пробовал movie = Movie.create!, Movie.create!(movie), Movie.create! movie, movie = Movie.create! (последний просто от отчаяния)... Что я делаю не так??

Заранее спасибо :)


person cerealCode    schedule 11.07.2016    source источник
comment
Мои деньги на двоеточии (:), которое вы пропустили в своем регулярном выражении.   -  person Eugene S    schedule 12.07.2016
comment
Какое регулярное выражение? movie — это переменная, представляющая хэш   -  person cerealCode    schedule 12.07.2016
comment
У вас есть шаг Учитывая, что существуют следующие фильмы: а затем вы пытаетесь сопоставить его с Дано /существуют следующие фильмы/ do |movies_table|. Где находится : в регулярном выражении, которое вы используете для соответствия определению шага?   -  person Eugene S    schedule 12.07.2016
comment
Нужно ли регулярное выражение? Этот синтаксис уже был в упражнении, я должен написать только блок после |movie|... Также я только что проверил документацию Cucumber и вижу примеры с таблицами и без регулярных выражений github.com/cucumber/cucumber/wiki/   -  person cerealCode    schedule 12.07.2016
comment
Исправление: нужно ли : регулярное выражение?   -  person cerealCode    schedule 12.07.2016
comment
Просто попробуйте и посмотрите, поможет ли это. Вы всегда можете изменить его обратно, если это не так.   -  person Eugene S    schedule 12.07.2016


Ответы (1)


Выглядит хорошо для меня.

Вы перебираете фильмы, а затем прямо перед end делаете fail "Unimplemented". Что вы ожидаете?

person Mykola Gurov    schedule 12.07.2016
comment
Спасибо, впервые использую огурец и вижу fail. Поскольку код был дан, и я думал, что должен писать в блоке, я предположил, что fail был там по причине, по которой я в конце концов узнаю. - person cerealCode; 12.07.2016
comment
Это fail указывает на то, что функция еще не готова, я думаю - person Mykola Gurov; 12.07.2016