2012-01-23 3 views
0

Я уверен, что это принципиально, так как я новый пользователь Rails и хочу сделать Cucumber правильно. Я провел выходные, читая Прагматическую книгу, и у меня есть небольшой проект, который я хочу создать и использовать. Я намеренно настроил свою первую функцию как можно шире, чтобы она не была хрупкой, слишком сильно зависящей от того, как она работает на стороне рельсов. Я создал новое приложение rails, используя стартер DanielKehoe на github. Кажется, я понял, что пользователь понял. Но когда я пытаюсь использовать Cucumber для создания моей первой таблицы ссылочных единиц, которая была бы таблицей констант, я ожидал, что огурец побудит меня создать модель ссылочных единиц, но я потратил все утро, пытаясь заставить ее сделать это, используя книги, Railscasts и stackoverflow, чтобы подтолкнуть меня туда, где я сейчас. Я пошел вперед и создал модель для ссылочных единиц, контроллера с новым действием и пустым представлением. Но теперь не могу понять, что у меня есть модель Reference Unit с (LoadError). Нечетный, потому что он есть в приложении.огурец (LoadError) для моей модели

Вот моя текущая особенность:

Feature: I want to have Reference Units that I can refer to so they can be used elsewhere. That way 
they can be updated in one place. I want to create and edit these Units. 

Background: 
Given I am logged in as the following user: 
| name | "Testy McUserton" | 
| password | "please" | 
| email | "[email protected]" | 

Scenario: Adding Reference Units 
When I go to the new Reference Units page 
And I fill in the following: 
| commodity | "corn" | 
| language | "en" | 
| wholesale unit | "xton" | 
| retail unit | "xliter" | 
| receipt unit | "dollar" | 
Then it should create a new Reference Unit 

вот мой шаг определение:

Given /^I am logged in as the following user:$/ do |table| 
    sign_up valid_user 
end 

When /^I go to the new Reference Units page$/ do 
    visit new_reference_unit_path 
end 

When /^I fill in the following:$/ do |table| 
    @reference_unit = Reference_unit.create!(table.rows_hash) 
end 

Then /^it should create a new Reference Unit$/ do 
    pending # express the regexp above with the code you wish you had 
end 

new_reference_unit_path в моей особенностью/поддержки/paths.rb как:

when /the new Reference Units page/ 
    '/reference_units/new' 

Run При этом в 3.1.3 следующее красное:

Scenario: Adding Reference Units    # features/user_can_create_units.feature:10 
When I go to the new Reference Units page # features/step_definitions/user_create_unit_reference.rb:6 
    Expected /Users/sam/apps/keriakoo/app/models/reference_unit.rb to define Reference_unit (LoadError) 
    ./app/controllers/reference_units_controller.rb:4:in `new' 
    ./features/step_definitions/user_create_unit_reference.rb:7:in `/^I go to the new Reference Units page$/' 
    features/user_can_create_units.feature:11:in `When I go to the new Reference Units page' 

Как я уже говорил выше. файл reference_unit.rb находится в правильном месте. Конечно, я не добавил никаких методов или атрибутов, ожидающих, что огурец поможет мне в нужное время. Я уверен, что это что-то простое, но я пробовал всевозможные комбинации слов и капитализации, чтобы встряхнуть что-то свободное, sam

ответ

0

ОК, я думаю, что я ударил по подсказке. Копаясь, я использовал опцию -backtrace на огурце, и он указал мне на зависимость с ключевым словом «const». Хорошо, ему не нравится что-то в тексте. Оглядываясь на информацию о двухсловных моделях, я могу сказать, что моя модель была правильной: ReferenceUnit. Но, глядя на мой вывод ошибки, он искал Reference_unit. Поэтому для смеха я изменил регулярное выражение для этого шага: «Когда/^ я перехожу на новую страницу ссылочных единиц $», ошибка исчезла. Поэтому синтаксис первой строки важен, а не «фристилин», как я подозревал.

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