Testing

In looking at the new "Agile Web Development with Rails" pdf, we're
finding the pdf confusing.

In the old book, fixture data was stored in a var, so you had something
like

vc_book=@products["version_control_book"]
assert_equal vc_book["id"], @product.id

You knew that the fixture data was loaded into @products, and the db
data was contained in @product.id.

This is a fundamental testing methodology called "Golden Reference
Model" where the fixture is the golden reference.

In the new scheme, fixtures are referred to as methods, which are
seemingly objects. It seems to me the fixture file is lost, we are
reading data from the db that has been loaded by the fixture. In the
new pdf, comparisions are made to a fixed string. So I have to retype
alll my data that is in the fixture? Am I missing something here?

I have a pretty simple request:

I would like a golden reference model. I want to use that reference
model (Fixture) to compare output from the model, controllers, etc. Do
I have to read the fixture file into the test method to compare? If so,
how come there isn't a YAML import example in the book?

The new pdf's method of comparing vs. fixed strings is unacceptable.

We have three people, and everyone is generally confused. Maybe we're
just dumb... but we've posted this several times in more complicated
forms, and it doesn't seem to be addressed. Hopefully this post is
simple enough where it can get us going in a direction.

Thanks!

Can you give an example where you are stuck? I don’t know where the problem is.

Fixtures are supposed to be referenced as such:

assert_equals ‘expected’, fixture_type(:fixture_name).attribute

Jason

Hi Jason,

When I use the string 'expected' it's hard coded into the test. I don't
want to do that. Typically I want to iterate of a set of values. So
what we do is something like (using an xml example)

xml.elements.each(somePath){|lelement|
  assert_equals element.text localFixture[:fixture_name].attribute
}

where localFixture is the fixture file read via YAML. If I use your
fixture_type, it seems to me that the item data is from the database -
not the fixture file - which violates our golden model rule. It seems
like the fixture file is loaded into the db, and then all calls to
fixture_type is actually going through the db rather than the fixture
file.

Appreciate the help.