1

我有一个简单的测试用例,如下所示:

describe 'Quiz packs page' do
  before :each do
    FactoryGirl.create(:quiz_pack, :first_in_first_pack).should be_valid
  end
end

it "should have an index page", :js => true do
  visit quiz_packs_path
end

为什么,当我使用 selenium 访问 quiz_packs_path 时,我来自 FactoryGirl 的特征不会显示为索引页面上的条目?

老实说,我读了太多关于 FactoryGirl 的文章,以至于我的大脑很痛,但我仍然不太明白创作是如何发生的。

如果有帮助,这是我的测验包。请注意,我使用的是 FactoryGirl 特征,因为我有很多这样的东西。如果这是一个问题,请告诉我。

FactoryGirl.define do
  factory :quiz_pack do
    trait :first_in_first_pack do |f|
      f.pack 1
      f.number 1
      f.image "first_image
    end
  end
end
4

1 回答 1

5

这是一个很好的问题。我没有这个问题,因为我总是在开始时正确设置 rspec。但这个问题仍然值得解决。

这是解决方案

这次第一个规范失败了,因为页面中缺少内容“油漆栅栏”。创建的数据库记录对 Selenium 测试不可用,这是因为我们的规范使用与 Selenium 不兼容的数据库事务。为了解决这个问题,我们可以将 spec_helper 文件中的 config.use_transactional_fixtures 设置为 false。 http://asciicasts.com/episodes/257-request-specs-and-capybara

所以,只要把它设置spec_helper.rb好,你就可以了。

config.use_transactional_fixtures = false

我已经在我的一个项目上检查过它,它运行良好。

此外,在任何情况下,数据库清理器始终是首选。

如果您有兴趣阅读,这里有一个详细的讨论,但不是必需的:https ://groups.google.com/forum/#!msg/ruby-capybara/JI6JrirL9gM/R6YiXj4gi_UJ

于 2013-04-11T00:45:41.507 回答