覆盖 Rails 测试 Test::Unit::TestCase

发布于 2024-11-27 23:01:00 字数 380 浏览 1 评论 0原文

我正在尝试覆盖/修改 Test::Unit::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

I am trying to overwrite/modify the teardown function of a Test::Unit::TestCase test.
During the teardown of the test (after it has finished), I want to do some extra stuff.

I tried this, but it doesn't work (keeps executing the original teardown):

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜扑 2024-12-04 23:01:00

您想要将其放在一个测试用例中还是全部中?

如果您需要更改所有测试用例:

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

Do you want it in one TestCase or in all?

If you need a change for all TestCases:

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
演多会厌 2024-12-04 23:01:00

您可能会发现使用 alias_method_chain 会产生更好的结果:

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

这会自动为您设置很多内容。

You might find that using alias_method_chain produces better results:

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

This sets up a lot of the stuff for you automatically.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文