Ruby on rails Rails-RSpec-random-db

Ruby on rails Rails-RSpec-random-db,ruby-on-rails,ruby,ruby-on-rails-4,rspec,Ruby On Rails,Ruby,Ruby On Rails 4,Rspec,我试图找出RSpec,但遇到了一些问题。 当我运行基本测试时: require 'rails_helper' describe Post do before do @post = Post.create!(title: 'foobar1', content: 'foobar'*5) end it 'orders by creation date' do @new_post = Post.create!(title: 'foobar1', content: 'fo

我试图找出RSpec,但遇到了一些问题。 当我运行基本测试时:

require 'rails_helper'

describe Post do

  before do
    @post = Post.create!(title: 'foobar1', content: 'foobar'*5)
  end

  it 'orders by creation date' do
    @new_post = Post.create!(title: 'foobar1', content: 'foobar'*5)
    Post.order('created_at desc').all.to_a.should == ([@new_post, @post])
  end
end
看起来我在db里有一些更神秘的帖子: 失败:

  1) Post orders by creation date
     Failure/Error: Post.order('created_at desc').all.to_a.should == ([@new_post, @post])

       expected: [#<Post id: 980190990, title: "foobar1", content: "foobarfoobarfoobarfoobarfoobar", created_at: "2016-04-19 12:38:50", updated_at: "2016-04-19 12:38:50">, #<Post id: 980190989, title: "foobar1", content: "foobarfoobarfoobarfoobarfoobar", created_at: "2016-04-19 12:38:50", updated_at: "2016-04-19 12:38:50">]
            got: [#<Post id: 980190990, title: "foobar1", content: "foobarfoobarfoobarfoobarfoobar", created_at: "2016-04-19 12:38:50", updated_at: "2016-04-19 12:38:50">, #<Post id: 980190989, title: "foobar1", content: "foobarfoobarfoobarfoobarfoobar", created_at: "2016-04-19 12:38:50", updated_at: "2016-04-19 12:38:50">, #<Post id: 980190962, title: nil, content: nil, created_at: "2016-04-19 11:59:56", updated_at: "2016-04-19 11:59:56">, #<Post id: 298486374, title: nil, content: nil, created_at: "2016-04-19 11:59:56", updated_at: "2016-04-19 11:59:56">] (using ==)
       Diff:
       @@ -1,3 +1,5 @@
        [#<Post id: 980190990, title: "foobar1", content: "foobarfoobarfoobarfoobarfoobar", created_at: "2016-04-19 12:38:50", updated_at: "2016-04-19 12:38:50">,
       - #<Post id: 980190989, title: "foobar1", content: "foobarfoobarfoobarfoobarfoobar", created_at: "2016-04-19 12:38:50", updated_at: "2016-04-19 12:38:50">]
       + #<Post id: 980190989, title: "foobar1", content: "foobarfoobarfoobarfoobarfoobar", created_at: "2016-04-19 12:38:50", updated_at: "2016-04-19 12:38:50">,
       + #<Post id: 980190962, title: nil, content: nil, created_at: "2016-04-19 11:59:56", updated_at: "2016-04-19 11:59:56">,
       + #<Post id: 298486374, title: nil, content: nil, created_at: "2016-04-19 11:59:56", updated_at: "2016-04-19 11:59:56">]
1)按创建日期发布订单
失败/错误:Post.order('created_at desc')。all.to_a.should==([@new_Post,@Post])
预期值:[#,#]
got:[#,#,#,#,#](使用==)
差异:
@@ -1,3 +1,5 @@
[#,
- #]
+ #,
+ #,
+ #]

你知道这个问题的原因是什么吗?

RSpec通常与

此gem确保在测试之间正确重置数据库。您可以在下面找到它的标准配置脚本

# spec/rails_helper.rb
require 'database_cleaner'

RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do |example|
    DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end
end