Обновлен до Capybara 2.1.0.rc, теперь возникают проблемы с current_path в моих спецификациях функций.

Итак, похоже, что я использовал current_path много раз в request specs. Однако Capybara теперь требует, чтобы спецификации были в features directory, чтобы использовать Capybara DSL (page & visit).

# creating_posts_spec.rb

require "spec_helper"

feature "creating posts" do

  scenario "creating posts with valid info is successful" do
    visit new_post_path
    fill_in 'Title', with: "This is a title test"
    fill_in 'Content', with: "This is a content test"
    click_button 'Create Post'
    page.should have_content 'Post was successfully created.'
    page.current_path.should == post_path(post)
  end
end

Это простой контроллер сообщений, и страница отображается после того, как сообщение отображается в браузере.

 posts GET    /posts(.:format)               posts#index
                     POST   /posts(.:format)               posts#create
            new_post GET    /posts/new(.:format)           posts#new
           edit_post GET    /posts/:id/edit(.:format)      posts#edit
                post GET    /posts/:id(.:format)           posts#show
                     PUT    /posts/:id(.:format)           posts#update
                     DELETE /posts/:id(.:format)           posts#destroy
                root        /                              posts#index

Почему я получаю сообщение об ошибке: undefined local variable or method 'post'?

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


person fontno    schedule 16.05.2013    source источник
comment
Ответ от stackoverflow.com/questions/14028247/ работает?   -  person Brad Werth    schedule 16.05.2013
comment
спасибо за предложение, но я прошел через все это, и page работает нормально. Это только строка current_path. Это странно, если я не упускаю что-то очевидное.   -  person fontno    schedule 16.05.2013


Ответы (1)


Поскольку post является неопределенным.... Вы нигде не устанавливаете его во всем сценарии.

person Brad Werth    schedule 16.05.2013
comment
Если вы каждый раз очищаете свою базу данных, вы, вероятно, могли бы обойтись чем-то вроде post_path(1), чтобы сохранить поиск и ускорить свои тесты. - person Brad Werth; 16.05.2013
comment
Вы правы, я должен был сделать что-то вроде post = Post.find_by_title("This is a title test"). Я знал, что упускаю что-то очевидное. - person fontno; 16.05.2013
comment
Я предполагаю, что спецификации функций имеют к ним другое отношение. Я думал, что что-то вроде того, что вы только что предложили и были правы, больше похоже на спецификации запроса. В любом случае, спасибо за вашу помощь - person fontno; 16.05.2013