Огурец не может найти маршруты?Это потенциально большой новый вопрос - PullRequest
0 голосов
/ 15 августа 2010

Приложение Rails3 с Rspec2 и огурцом

Огурцы

Given /^that a user is logged in$/ do
  current_user = User.first
  render new_user_post_path(current_user)
end

routes.rb

map.resources :users do |users|
  users.resources :posts, :collection => {:view => :get}
end

posts_controller_spec

describe PostsController do
  describe "#new" do
    it "should be successful" do
      get :new
      response.should be_success
    end
  end
end

Моя первая большая эпопея Fail

(::) failed steps (::)

No route matches {:controller=>"posts", :action=>"new"} (ActionController::RoutingError)
./features/step_definitions/tasklist_steps.rb:3:in `/^that a user is logged in$/'
features/tasklist.feature:7:in `Given that a user is logged in'

Failing Scenarios:
cucumber features/tasklist.feature:6 # Scenario: List SubmitLink

1 scenario (1 failed)
3 steps (1 failed, 2 skipped)
0m0.147s
rake aborted!

Извините, я слишком новичок. Это моя первая попытка огурца. (

1 Ответ

3 голосов
/ 15 августа 2010

Во-первых, отключение карты в маршрутах Rails 3 не рекомендуется, вероятно, у вас должно быть что-то вроде этого.создайте пользователя в тестовой базе данных, а затем перейдите на страницу входа и войдите в систему, чтобы в приложении все было правильно настроено.

Given /^I have one user "([^\"]*)" with email "([^\"]*)" and password "([^\"]*)"$/ do |username,email, password|
  @user = User.new(:email => email,
                   :username=>username,
                   :password => password,
                   :password_confirmation => password)
   @user.save!
end

Given /^I am an authenticated user$/ do
  name = 'exmample'
  email = 'example@example.com'
  password = 'secret!'

  Given %{I have one user "#{name}" with email "#{email}" and password "#{password}"}
  And %{I go to the user login page}
  And %{I fill in "user_username" with "#{name}"}
  And %{I fill in "user_password" with "#{password}"}
  And %{I press "Sign in"}
end

Я использую его следующим образом:

Feature: 
  In order to reboot my crappy/POS equipment without bothering the awesome Noc Monkeys
  I would like to login to a webpage and see the status of and control the outlets on my equipment

  Background: Valid and authenticated user with at least one outlet to control
    Given I am an authenticated user

  @ok
  Scenario: Viewing All outlets
    Given I am able to control an outlet with index "1"
    And I am on the home page
    Then I should see "server_1"

Кроме того, обычно я не вызываю рендер внутри шага огурца.Поскольку вы работаете с имитируемым браузером (при условии вебрат / капибара), вы бы visit path_to(page_name).

...