Как получить идентификатор объекта из сеанса в функциях огурца

Итак, я пишу функции принятия для действий с моей корзиной в Магазинах и хотел бы убедиться, что нажатие на ссылку Edit Cart приводит меня к edit_cart_path.

Итак, у меня есть определение шага огурца:

Then(/^I should be on the (.*) page$/) do |page_name|
  current_path.should eq send(page_name.split(/\s+/).push('path').join('_').to_sym)
end

Какие ошибки выводятся на странице редактирования (cart/123456/edit) с No route matches {:action=>"edit", :controller=>"Carts"}, так как мой маршрут должен быть {:action=>"edit", :controller=>"Carts", :id=>123456}

Идентификатор корзины находится в session[:cart_id], к которому я не могу получить доступ внутри теста.

Теперь вопрос в том, как мне проверить, правильно ли я нахожусь на странице редактирования?


person deiga    schedule 16.10.2013    source источник


Ответы (2)


Cucumber предназначен для разработки, основанной на поведении, и поэтому тест должен описывать поведение, которое вы ожидаете увидеть. Вместо того, чтобы проверять URL-адрес текущей страницы, чтобы убедиться, что у вас правильный идентификатор, я бы написал тест, чтобы увидеть, отображается ли правильный контент на странице.

Итак, предположим, что у вас есть тележка с некоторыми предметами, что-то вроде

Given a cart exists
And I have added "Cucumber and Friends"
When I click the edit link
Then I should see the edit cart page

На странице редактирования корзины проверяется правильность контента на странице.

page.should have_selector("h1", text: "Edit Cart")
page.should have_field("edit", with: "Cucumber and Friends")
person RobertH    schedule 17.10.2013

Мое решение состояло в том, чтобы проанализировать идентификатор из URL-адреса, а затем передать его методу _path для проверки.

Хотя не уверен, что это имеет смысл...

person deiga    schedule 13.11.2013