Ruby on rails Rails-RSpec-random-db
我试图找出RSpec,但遇到了一些问题。 当我运行基本测试时: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
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