2017-08-08 41 views
0

我使用燈具作爲測試數據。在我的fixtures加載到db之後,但在任何測試運行之前,我需要做額外的初始化步驟。額外的初始化數據應該可用於所有測試。如何在夾具加載之後但第一次測試開始之前運行一段代碼?

test_helper.rb中

class ActiveSupport::TestCase 
    fixtures :all 
end 

user_test.rb

require 'test_helper' 
class UserTest < ActiveSupport::TestCase 
    test do 
    # here I use my extra initialization data 
    # it takes a lot of effort to create the data 
    # I'd like this data is available to every test in initial state 
    end 
end 

這裏是日誌。我標記了需要完成初始化的地方。

D, [2017-08-09T07:54:19.910545 #94547] DEBUG -- : (8.8ms) ALTER TABLE "mytable" DISABLE TRIGGER ALL; 
D, [2017-08-09T07:54:20.151100 #94547] DEBUG -- : (0.2ms) BEGIN 
D, [2017-08-09T07:54:20.153111 #94547] DEBUG -- : Fixture Delete (0.3ms) DELETE FROM "mytable" 
D, [2017-08-09T07:54:21.231062 #94547] DEBUG -- : Fixture Insert (0.2ms) INSERT INTO "mytable" ... 
D, [2017-08-09T07:54:21.234581 #94547] DEBUG -- : (2.1ms) COMMIT 
D, [2017-08-09T07:54:21.239761 #94547] DEBUG -- : (4.1ms) ALTER TABLE "mytable" ENABLE TRIGGER ALL; 
# <-- I need my initialization here 
D, [2017-08-09T07:54:21.256388 #94547] DEBUG -- : (0.2ms) BEGIN 
I, [2017-08-09T07:54:21.256510 #94547] INFO -- : ----------------------------- 
I, [2017-08-09T07:54:21.256550 #94547] INFO -- : DummyTest: test_my_dummy_test 
I, [2017-08-09T07:54:21.256583 #94547] INFO -- : ----------------------------- 
(dbg) my dummy test: setup 
(dbg) my dummy test 
(dbg) my dummy test: teardown 
D, [2017-08-09T07:54:21.257013 #94547] DEBUG -- : (0.1ms) ROLLBACK 
+0

你應該添加一些代碼,你目前如何做到這一點。否則很難知道如何幫助你。 – Nobita

+0

@Nobita我已經添加了一些代碼以獲得更好的解釋。 – sitnikovme

回答

0

最好的發現其解決方法到目前爲止是下面的方法添加到的ActiveSupport :: TestCase類

def enlist_fixture_connections(*) 
    result = super 
    # you code here 
    result 
end 

您的代碼將夾具初始化後每次試驗前,但不是在測試的事務執行。

相關問題