我的FactoryGirl创建的对象是不是持久存在?

时间:2012-06-16 10:27:17

标签: ruby-on-rails-3 cucumber capybara factory-bot

我正在运行以下功能:

  Scenario: viewing existing images
    Given I am on the images page
    And 4 images already exist
    Then I should see a table containg those 4 images
    And have the option to show images
    And have the option to delete images

定义了以下步骤:

Given /^I am on the images page$/ do
  visit(images_path)
end

Given /^(\d+) images already exist$/ do |count|
  count.to_i.times {
    FactoryGirl.build(:image).save!
  }
end

Then /^I should see a table containg those (\d+) images$/ do |count|
  page.all('table#imagesTable tr').count.should == count
end

计算表中行数的最后一步失败了。它只能找到一行,我假设它是标题行。这些是索引页面的测试,我手册确认它有效。为什么我的FactoryGirl创建的对象不是我的控制器?

控制器的索引方法:

  def index
    @images = Image.all
  end

1 个答案:

答案 0 :(得分:3)

交换“我在图像页面上”的顺序和“已存在的4张图像”。

正在调用索引操作视图在创建图像之前呈现,因此它们不会被拾取。

另外,我不知道你是否已经知道这一点,而不是

FactoryGirl.build(:image).save!

你可以做到

FactoryGirl.create(:image)