如何从黄瓜特征的会话中获取对象的ID

时间:2013-10-16 05:27:29

标签: ruby-on-rails ruby-on-rails-3 cucumber capybara poltergeist

因此,我正在为我的商店购物车操作编写接受功能,并希望确认点击Edit Cart链接会将我带到edit_cart_path

所以我有一个Cucumber步骤定义:

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}我的路线应为{{1}}

购物车的ID在会话[:cart_id]中,我无法在测试中访问。

现在的问题是,如何在编辑页面上测试我是否正确?

2 个答案:

答案 0 :(得分:0)

Cucumber专为行为驱动开发而设计,因此测试应该描述您期望看到的行为。我会编写测试以查看页面上是否显示正确的内容,而不是检查当前页面的URL以确保您具有正确的ID。

所以,假设你的购物车中有一些物品,那就是

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")

答案 1 :(得分:0)

我的解决方案是解析网址中的ID,然后将其传递给_path方法以获得验证。

不确定它是否有意义......