2011-08-05 235 views
0

我想覆蓋/修改Test :: Unit :: TestCase測試的拆解函數。 在拆解測試期間(完成之後),我想要做一些額外的事情。覆蓋Rails測試測試::單元:: TestCase

我嘗試這樣做,但它不工作(保持執行原拆機):

module Test 
    module Unit 
    class TestCase 
     def teardown_modified 
      # do modifications 
      teardown_original 
     end 

     alias teardown_original teardown 
     alias teardown teardown_modified 
     end 
    end 
end 
+0

這不應該是符號嗎? – Senthess

+0

'別名'是奇怪的,這就是爲什麼大多數人不使用它。 – tadman

回答

1

你想在一個測試用例或全部?

如果你需要對所有的TestCase的變化:

gem 'test-unit' 
require 'test/unit' 

module Test 
    module Unit 
    module Fixture 
     alias :run_teardown_old :run_teardown 
     def run_teardown 
      # do modifications 
      puts "In modified teardown" 
      run_teardown_old 
     end #def run_teardown 
     end #module Fixture 
    end #module Unit 
end #module Test 

class MyTest < Test::Unit::TestCase 
    def teardown 
    puts "In teardown" 
    end 

    def test_4() 
    assert_equal(2,1+1) 
    end 
end 
+0

謝謝,工作正常! – Jochen

1

您可能會發現,使用alias_method_chain產生更好的效果:

class Test::Unit::TestCase 
    def teardown_with_hacks 
    teardown_without_hacks 
    end 
    alias_method_chain :teardown, :hacks 
end 

這會自動設置了很多的東西給你。

+0

謝謝,看起來不錯! – Jochen