你如何编写一个只为测试文件执行一次的设置方法?

时间:2015-10-22 20:07:42

标签: ruby-on-rails ruby minitest

我想有一个方法,每个文件运行一次而不是每次测试一次。我看过一些对“之前”方法的引用,但似乎不适用于MiniTest。理想情况下,这样的事情:

class MyTest < ActiveSupport::TestCase
   before do
      # Executes once per file
   end

   setup do
      # Executes once per test
   end

   # Tests go here
end

2 个答案:

答案 0 :(得分:4)

在使用spec dsl for minitest时使用之前,它等同于设置。 您可以使用设置,如果您在test_helper.rb文件中使用安装程序,它将在所有测试之前执行一次。

setup也可以在测试类中声明。使用设置,放置标志并在第一时间更新标志。

x = 0
setup do
  if x == 0
    x = x + 1
    puts "Incremented in x = #{x}"
  end
end

OR

setup_executed = false
setup do
  unless setup_executed
    #code goes here
    setup_executed = true
  end
end

答案 1 :(得分:1)

您可以在类定义之外添加代码。

  # Executes once per file
  puts "Executed once"

  class MyTest < ActiveSupport::TestCase

     setup do
        # Executes once per test
     end

     # Tests go here
  end

您也可以在类定义中添加代码,但不在任何方法之外:

  class MyTest #< ActiveSupport::TestCase
    # Executes once per Testclass
     puts "Executed once"

     setup do
        # Executes once per test
     end

     # Tests go here
  end