Огурец, кажется, пропустил данный шаг - PullRequest
0 голосов
/ 10 августа 2011

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

Особенности:

Feature: a new user vists the site and signs up
    in order to get new users
    when an unlogged in users comes to the website
    then they should see the sign-up dialog
    and be able to signup for the website 

    Background:
        Given I have at least one deal

    Scenario: a new user is asked to signup
        Given I am on show deal
        Then I should see "New Here?"

    @javascript
    Scenario: new user signup failure
        Given I am on show deal
        When I fill in "consumer[user_attributes][email]" with "test@test.com"
        And I press "consumer_submit"
        Then I should see "1 error prohibited"

Определение шага:

Given /^I have at least one deal$/ do
  Deal.create copy:'Example Deal Copy', copy_header:'Example Deal Header', copy_subheader:'Example Deal Subheader' if Deal.all.size == 0
end

Результат:

Background:                      # features/new_user_signup.feature:7
    Given I have at least one deal # features/step_definitions/new_user_signup_steps.rb:1

  Scenario: a new user is asked to signup # features/new_user_signup.feature:10
    Given I am on show deal               # features/step_definitions/web_steps.rb:44
    Then I should see "New Here?"         # features/step_definitions/web_steps.rb:105

  @javascript
  Scenario: new user signup failure                                        # features/new_user_signup.feature:15
    Given I am on show deal                                                # features/step_definitions/web_steps.rb:44
      Couldn't find Deal with ID=1 (ActiveRecord::RecordNotFound)
      ./app/controllers/deals_controller.rb:17:in `show'
      <internal:prelude>:10:in `synchronize'
      ./features/step_definitions/web_steps.rb:45:in `/^(?:|I )am on (.+)$/'
      features/new_user_signup.feature:16:in `Given I am on show deal'
    When I fill in "consumer[user_attributes][email]" with "test@test.com" # features/step_definitions/web_steps.rb:60
    And I press "consumer_submit"                                          # features/step_definitions/web_steps.rb:52
    Then I should see "1 error prohibited"                                 # features/step_definitions/web_steps.rb:105

Failing Scenarios:
cucumber features/new_user_signup.feature:15 # Scenario: new user signup failure

Какой бы сценарий я ни выбрал, второй вызовет ошибку ActiveRecord. Почему в моем втором сценарии нет записей в базе данных?

1 Ответ

1 голос
/ 11 августа 2011

Теперь я знаю, как вы отобразили «show deal». Я испытываю желание сказать, что проблема в том, что экземпляр Deal, возможно, существует, но его идентификатор не равен 1. Вы можете проверить, пожалуйста?

И вот совет: пока вы определяете пути в вашем path.rb, вы можете сделать что-то вроде этого:

when /the edit deal page/
edit_deal_path(Deal.first)

или даже это:

when /the deal page for deal named ".*"/
        deal_name = page_name.scan(/".*"/).first.gsub("\"", '') 
        deal = Deal.find_by_name(deal_name)
        deal_path(deal)

Пока вы определили свой веб-шаг "Я нахожусь" следующим образом:

Given /^(?:|I )am on (.+)$/ do |page_name|
  visit path_to(page_name)
end

Это намного лучше, чем "сделок / 1":)

...