2013-12-10 3 views

답변

5

몇 가지 옵션이 있습니다. 하나는 트랜잭션 비품없이 테스트를 작성하고 테스트 데이터베이스에 대한 변경 사항으로 인해 다른 테스트가 중단되지 않기를 바랍니다.

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 콜백에서 논리를 이동하는 것입니다.