我正在我的控制器规范中运行一些测试,我发现了一个奇怪的行为,我无法解释为什么会发生这种情况。
我的规格看起来像这样:
require 'rails_helper'
describe BooksController do
let(:user_with_books) { create :user, :with_books }
...
describe 'GET /books/:book_id/owners' do
it 'shows all owners of the book' do
book = user_with_books.books.first
user_2 = create :user
book.owners << user_2
get :owners, book_id: user_with_books.books.first.id
expect(assigns(:users).count).to eq 2
expect(assigns(:users).first).to eq user_with_books
expect(assigns(:users).second).to eq user_2
end
end
end
如果我运行命令
rspec spec/controllers/books_controller_spec.rb:31
一切都是绿色的:
但如果我只运行rspec
,测试将会失败!
Rspec对此规范做了什么改变行为?我该怎么做才能解决这个问题?
编辑:我的spec_helper.rb
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
config.infer_spec_type_from_file_location!
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
end
答案 0 :(得分:1)
根据您的spec_helper.rb
,您永远不会打电话给DatabaseCleaner.clean
。实际上<{3}}到实际清理数据库,例如: G。 before(:each)
过滤器:
config.before(:each) do
DatabaseCleaner.clean
end