Ruby on Rails测试数据库未提交新记录

时间:2011-01-18 23:05:42

标签: ruby-on-rails database unit-testing factory-bot

有没有办法使用Factory Girl在Ruby on Rails中为测试数据库提交新的更改?

我有以下工厂:

Factory.define :shipping_info do |si|
    si.name "Foo Bar"
    si.street "12 Candy Lane"
    si.country "US"
    si.zip "12345"
    si.state "IL" 
end

我有以下测试:

require File.dirname(__FILE__) + '/../../spec_helper'

describe CgCart::ShippingInfo do

   before(:each) do
      @order = Factory(:order)
      @order.order_line_item = Factory(:order_line_item)
      @shipping_info = Factory(:shipping_info)
   end

    it "order should not be nil" do
        @shipping_info.should_not be_nil
    end
end

当我运行此测试时,它会通过。但是,我的测试数据库中没有创建新记录。我需要数据才能与Dameon合作。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

使用Factory.create(:order)应该将该对象写入数据库。 如果将事务夹具设置为true,则在测试完成后,所有写入数据库的数据都将回滚。

在运行测试之前你不能tail -f log/test.log,你会在那里看到 lot 的活动。

我希望能够清除你的情况。