Plugins - fixture

StarAdd to favorites

Fixture
=======

Fixture allows creation of fixture data inline inside of tests rather than creating them in separate fixture files.

Example
=======

Let's say that your application has a Person model and each person is required to have a unique email address.

class Person < ActiveRecord::Base
validates_uniqueness_of :email_address
end

Using the normal fixture file in test/fixtures/people.yml you would add a person entry with an email address you could test against.

first:
id: 1
name: Cosmo Spacely
email_address: cosmo@sprockets.com


Then in your test/unit/person.rb unit test you would have a test something like this:

require File.dirname(__FILE__) + '/../test_helper'

class PersonTest < Test::Unit::TestCase
fixtures :people

def test_should_require_unique_email_address
person = Person.new :email_address => "cosmo@sprockets.com"
assert !person.valid?
assert_equal "has already been taken", person.errors.on(:email_address)

person = Person.new :email_address => "john.smith@example.com"
person.valid?
assert_nil person.errors.on(:email_address)
end
end

To change this example to use the fixture method you would simply remove the call to fixtures :people that loaded the yaml fixture file.
Then in the test method you would add a call to the new fixture method and pass in the data that should be loaded.

require File.dirname(__FILE__) + '/../test_helper'

class PersonTest < Test::Unit::TestCase
# We don't need to load the people fixtures anymore
# fixtures :people

def test_should_require_unique_email_address
# The fixture method will load in the data we need for this test
fixture :person, :email_address => "cosmo@sprockets.com"

person = Person.new :email_address => "cosmo@sprockets.com"
assert !person.valid?
assert_equal "has already been taken", person.errors.on(:email_address)

person = Person.new :email_address => "john.smith@example.com"
person.valid?
assert_nil person.errors.on(:email_address)
end
end

Copyright (c) 2007 [Jonathan Younger], released under the MIT license

Jonathan Younger

http://www.daikini.com/past/2007/6/10/rails_fixtures/

svn://svn.roundhaus.com/daikini/plugins/fixture

Rails' (MIT)

  • Currently 0.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Testing

Tags

Comments

Add a comment

Search Plugins

Query syntax

Plugins by Category

Sponsors

Rails Kits: Get Code. Get Moving.

Have a comment?