testdependencies

This tiny tool adds explicit dependency declarations to rails’ #test method. more info: www.iam.unibe.ch/~scg/Research/JExample/

test "A test that depends on" => "dependency" do |value_of_dependency|
  assert something
end

The dependency will be evaluated after the (now optional!) setup block has been run and before the test itself is executed.

This style of testing hurts some holy principles and might seem a bit dirty, but it will spped up your test writing quite a bit.

You don’t have to declare any dependencies

Installation

$ gem install testdependencies

Add the following line to your test_helper

#rails_root/test/test_helper.rb

# loading rails first... 
require 'testdependencies'

Usage

Instead of a string you can pass a single keyed (atomic) hash to #test with a string key that will define your new test just as you would with the plain test method.

The value of the hash defines a dependency. Either a sym = method_name or a string = test_name.

Example

class RegressionTest < ActiveSupport::TestCase

  def new_user
    user = Object.new
    def user.name
      "Horst"
    end
    user
  end

  test "User has a name" => :new_user do |user|
    assert_respond_to user, :name
    user.name
  end

  test "User name is Horst" => "User has a name" do |name|
    assert_equal "Horst", name
  end
end

WARNING

If you are the kind of person who will state that

“Something containing unescaped ampersand is not xml and thus there is no problem with this lib.”

in reply to

“Help me parsing an xml file that contains unescaped ampersands with this lib”

then you should probably NOT USE THIS TOOL.

Copyright © 2010 Matthias Hennemeyer. See LICENSE for details.