2
ministest에서 use_transactional_fixtures = false를 비활성화하여 after_commit 콜백을 catch하려고합니다. 무엇을 어디에서 설정해야합니까?레일 minitest, 데이터베이스 청소기 use_transactional_fixtures = false를 설정하는 방법
ministest에서 use_transactional_fixtures = false를 비활성화하여 after_commit 콜백을 catch하려고합니다. 무엇을 어디에서 설정해야합니까?레일 minitest, 데이터베이스 청소기 use_transactional_fixtures = false를 설정하는 방법
몇 가지 옵션이 있습니다. 하나는 트랜잭션 비품없이 테스트를 작성하고 테스트 데이터베이스에 대한 변경 사항으로 인해 다른 테스트가 중단되지 않기를 바랍니다.
class SomethingTest < ActiveSupport::TestCase
self.use_transactional_fixtures = false
def test_something_with_after_commit
# do work here, which will change your test database
end
end
또 다른 옵션은 트랜잭션 픽스처를 유지하면서 after_commit 콜백을 수동으로 호출하는 것입니다.
class SomethingTest < ActiveSupport::TestCase
def test_something_with_after_commit
something = Something.new
something.save
something.after_commit
# verify things happened as expected
end
end
그리고 또 다른 옵션은 호출 될 콜백에 의존하지 않고 그것에 대한 적절한 테스트를 작성할 수있는 새로운 객체로
after_commit
콜백에서 논리를 이동하는 것입니다.