为什么selenium没有看到我的数据库中的对象?

时间:2014-02-28 17:00:00

标签: ruby-on-rails rspec capybara

给出

require 'spec_helper'

describe "visit '/'" do
  context "displays ", :driver => :selenium do
    before :each do
      FactoryGirl.create :restaurant, name: "John's Cafe"
      visit '/'
    end
    context "content:" do
      it "Restaurantly Spots!" do
        expect(page).to have_content 'Restaurantly Spots!'
      end

      it "John's Cafe" do
        expect(page).to have_content "John's Cafe"
      end
    end
  end
end
使用硒的capybara测试失败了'have_content'“John's Cafe”。

capybara是否无法在块之前看到添加到db的db对象?

我确定测试数据库中有对象,但它没有显示在视图页面上,视图页面在开发中正确连接,我更好奇为什么这个测试不会通过。谢谢。

我的测试套件是基于avdi的博客文章配置的 http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/

1 个答案:

答案 0 :(得分:0)

你可以尝试一些事情: a)将'pry'gem添加到gemfile中,然后可以将binding.pry添加到测试代码中。例如:

it "John's Cafe" do
  binding.pry
  expect(page).to have_content "John's Cafe"
end

此时运行测试时,您将看到一个控制台(如irb或rails控制台)并对您的应用程序进行内省。因此,您可以查看内容是否在数据库中。例如:

Restaurant.last

这应该可以为您提供有关餐厅是否已保存到数据库的线索。

一个问题,第一次测试通过了吗? “餐厅的景点!”?

请告诉我这是否有效或您有更多问题。

Mike Riley