Is there a setup_class/teardown_class for Rails tests?
-
12-09-2019 - |
Question
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?
Solution
There are several popular test frameworks that build on Test::Unit
and provide this behavior:
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
context "A Widget" do
# same syntax as RSpec for before(:all), before(:each), &c.
end
OTHER TIPS
I think rails provides such a functionality for fixtures. You can use fixtures by saying
fixtures :users
in your test files
and besides you can also use
def setup #.... end
in your test files as well,