概要
- rspecのデフォルトの設定では、データベースへのコミットが行われないようになっているため、after_commitのテストができない
- テストする方法をメモしておく
特定のテストだけcommitする
run_callbacksを使う
describe User do
before do
User.create!(name: "hoge")
@user_id = User.last.id
end
it 'should output logs' do
Rails.logger.should_receive(:warn).with(/hoge/o)
user = User.find_by_id(@user_id)
user.destroy
user.run_callbacks(:commit)
end
end
すべてのテストでcommitする
config.use_transactional_fixtures = false にする
- ロールバックは自分でする必要がある
# spec_helper.rb
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
config.use_transactional_fixtures = false