【问题标题】:How can I retrieve and use the ID of a record I've created inside an RSpec/Capybara test?如何检索和使用我在 RSpec/Capybara 测试中创建的记录的 ID?
【发布时间】:2013-07-09 17:25:54
【问题描述】:

我正在尝试访问我在单个测试中创建的对象的页面。

it "should display some text" do
  log_employee_in
  create_ticket
  visit "/tickets/#{Ticket.last.id}"
  page.should have_content 'Some Text'
end

在此测试的范围内,Ticket.last 会显示我刚刚创建的记录之前。在这个单独的测试之后,我可以通过发出 Ticket.last 在 Rails 测试控制台中检索正确的记录。

似乎直到当前测试结束后,记录才真正持久化到数据库中。

如何在测试中检索此 ID?

【问题讨论】:

  • 可以把create_ticket helper的内容贴出来吗?
  • 我可以,但我不确定这会有什么帮助。调用 create_ticket 方法后,存在一个票据供测试使用。但不知何故,它对数据库不可用/持久化。

标签: database ruby-on-rails-3 capybara integration-testing rspec2


【解决方案1】:

我认为访问的执行不正确。如果 create_ticket 的其他实现是正确的,并且您对此很确定。你可以试试这个:

it "should display some text" do
  log_employee_in
  create_ticket
  visit ticket_path(Ticket.last.id) # you should be even able to get the ticket with Ticket.last
  page.should have_content 'Some Text'
end

【讨论】:

  • 事实证明,我完全忽略了一个命名空间问题。我应该尝试访问"/service/tickets/#{Ticket.last.id}"。但是,我的代码仍然很难看。你的绝对是我要使用的。谢谢!
猜你喜欢
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
相关资源
最近更新 更多