RunningMan
Provides a simple way of setting up setup/teardown blocks that execute just once for the entire test case.
class MyTest < Test::Unit::TestCase
class << self
attr_accessor :block
end
self.block = RunningMan::Block.new do
# something expensive
end
def setup
self.class.block.run(self)
end
end
This looks much better in something like ActiveSupport::TestCase, where a
#setup
method takes a block.
class MyTest < ActiveSupport::TestCase
block = RunningMan::Block.new do
# something expensive
end
setup { block.run(self) }
end
You can also extend your test case class with helper methods to make this look nicer.
RunningMan.setup_on ActiveSupport::TestCase
class MyTest < ActiveSupport::TestCase
setup_once do
# something expensive
end
end
ActiveRecord!
The use case for RunningMan is for database testing in my Rails apps. RunningMan gives me a setup where on each test case, we:
- Clear the database
- Load the fixtures
- Run the tests
It's not entirely unlike Rails' default fixture behavior, but there are a few important subtleties:
- Fixtures are not loaded into the DB for each test - instead they are loaded once for each test class and shared amongst the tests.
- Each test class has its own set of fixtures. Adding or removing fixtures to a test class will not break other tests in strange and mysterious ways.
This has been tested on Ruby 1.8.7/ActiveRecord 2.2 and Ruby 1.9/ActiveRecord 3.0 beta 3.
RunningMan.setup_on ActiveSupport::TestCase, :ActiveRecordBlock
class MyTest < ActiveSupport::TestCase
fixtures do
@post = Post.make # <3 Machinist
end
test "check something on post" do
assert_equal 'foo', @post.title
end
test "delete post" do
@post.destroy
end
end
Note on Patches/Pull Requests
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don’t break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
Copyright © 2010 rick. See LICENSE for details.