Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a setup_class/teardown_class for Rails tests?

I need to have a setup and teardown method for some Rails tests that is class or system wide, yet I have only found a way to define a regular setup/teardown that works on a per test level.

For example:

class ActiveSupport::TestCase
  setup do
    puts "Setting up"
  end

  teardown do
    puts "tearing down"
  end
end

will execute the outputs for each test case, but I would like something like:

class ActiveSupport::TestCase
  setup_fixture do
    puts "Setting up"
  end

  teardown_fixture do
    puts "tearing down"
  end
end

which would execute the setup_fixture before all test methods, and then execute teardown_fixture after all test methods.

Is there any such mechanism? If not, is there an easy way to monkey patch this mechanism in?

like image 796
Joe Dean Avatar asked Jun 06 '09 00:06

Joe Dean


1 Answers

There are several popular test frameworks that build on Test::Unit and provide this behavior:

RSpec

describe "A Widget" do
  before(:all) do
    # stuff that gets run once at startup
  end
  before(:each) do
    # stuff that gets run before each test
  end
  after(:each) do
    # stuff that gets run after each test
  end
  after(:all) do
    # stuff that gets run once at teardown
  end
end

Test/Spec

context "A Widget" do
  # same syntax as RSpec for before(:all), before(:each), &c.
end
like image 171
James A. Rosen Avatar answered Nov 10 '22 02:11

James A. Rosen