# Named fixtures and automatic instance variables; newbie prob

**URL:** <https://www.ruby-forum.com/t/named-fixtures-and-automatic-instance-variables-newbie-prob/55182>\
**Category:** Ruby\
**Created:** [March 17, 2006, 6:23pm UTC](https://www.ruby-forum.com/t/named-fixtures-and-automatic-instance-variables-newbie-prob/55182 "2006-03-17T18:23:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![asplake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/2bfe46/32.png) [@asplake](https://www.ruby-forum.com/u/asplake)\
**Post date:** [March 17, 2006, 6:23pm UTC](https://www.ruby-forum.com/t/named-fixtures-and-automatic-instance-variables-newbie-prob/55182/1 "2006-03-17T18:23:51Z")

</div>

According to Agile Web D. with Rails (pg 148), a fixture like

version\_control\_book:  
id: 1  
title: Pragmatic Version Control  
…

loaded as “fixtures: products”

can be accessed as @products[“version\_control\_book”] or  
@version\_control\_book within a unit test (TestCase).

My (very simple) tests are working otherwise, but the equivalents of  
@products and @version\_control\_book are nil. Why?

## patients.yml is:

## newborn: id: 1 hosp\_ident: 120001010 last\_name: Musa other\_names: BabyA sex: F … etc.

patients\_test.rb is

* * *

require File.dirname( **FILE** ) + ‘/…/test\_helper’  
class PatientTest \< Test::Unit::TestCase  
fixtures :patients

def setup  
@patient = Patient.find(1)  
end

## def test\_truth puts “@patients = #{@patients.inspect}” puts “@newborn = #{@newborn}” assert\_kind\_of Patient, @patient assert\_equal 1, @patient.id assert\_equal ‘F’, @patient.sex assert\_equal ‘-’, @patient.rv … etc end end

and the output is:

[mike@eeyore ptbase]$ ruby test/unit/patient\_test.rb  
Loaded suite test/unit/patient\_test  
Started  
nil  
.  
Finished in 0.166667 seconds.

1 tests, 4 assertions, 0 failures, 0 errors  
[mike@eeyore ptbase]$ ruby test/unit/patient\_test.rb  
Loaded suite test/unit/patient\_test  
Started  
@patients = nil  
@newborn =  
.  
Finished in 0.134237 seconds.

1 tests, 4 assertions, 0 failures, 0 errors

---

<div class="post-metadata">

**Author:** ![asplake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/2bfe46/32.png) [@asplake](https://www.ruby-forum.com/u/asplake)\
**Post date:** [March 17, 2006, 6:28pm UTC](https://www.ruby-forum.com/t/named-fixtures-and-automatic-instance-variables-newbie-prob/55182/2 "2006-03-17T18:28:01Z")

</div>

Mike B. wrote:

> According to Agile Web D. with Rails (pg 148), a fixture like
> 
> version\_control\_book:  
> id: 1  
> title: Pragmatic Version Control  
> …
> 
> loaded as “fixtures: products”
> 
> can be accessed as @products[“version\_control\_book”] or  
> @version\_control\_book within a unit test (TestCase).

You should post to the Rails list, not this Ruby list.

But…

The book is out of date if you’re running rails 1.0. Instantiated  
fixtures are no longer enabled by default.

You need to do:

mybook = products(:version\_control\_book)

etc.

---

<div class="post-metadata">

**Author:** ![asplake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/2bfe46/32.png) [@asplake](https://www.ruby-forum.com/u/asplake)\
**Post date:** [March 18, 2006, 8:31am UTC](https://www.ruby-forum.com/t/named-fixtures-and-automatic-instance-variables-newbie-prob/55182/3 "2006-03-18T08:31:44Z")

</div>

Thanks, Jeff.
