Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Add explicit dependencies to your Rails tests.
Ruby
tag: v0.1.0

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
.document
.gitignore
LICENSE
README.rdoc
Rakefile
VERSION

README.rdoc

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

Copyright © 2010 Matthias Hennemeyer. See LICENSE for details.

Something went wrong with that request. Please try again.