Thanks everyone for your responses - this is a really helpful discussion 
and every post has added to my understanding.  Thanks also for 
disagreeing with each other, as it makes me feel less stupid for asking 
the question :)

Jim Morris wrote:
> Ok I think I see the difference, by the state being in the Database or 
> the response variable it does
> not implicitly couple steps like an @variable would. But it still 
> requires the database to have been
> setup in a certain state by certain preceding Givens or Whens, which is 
> a kind of coupling. But
> maybe I am stretching too far on that argument? I still feel coupling is 
> coupling and state is state :)

It seems to me that with

"Given an existing post 'lol internet'" # creates a post with that title
"Then the page should include 'lol internet'" # assumes a post with that 
title

the assumptions are in line with what you'd naturally understand from 
the English, whereas

"Given an existing post 'lol internet'" # creates and stores in 
@the_post
"Then I should see the post title" # verifies @the_post matches what's 
in the db

seems to make more assumptions than are obvious from the English.

In fact, couldn't one argue that the second example is redundantly 
storing the post in two places (the database and @the_post)?  I think 
this is what Aslak means by distinguishing "stateful" and "stateless" - 
@variables are *extra* state, on top of the application state which must 
change either way or you're not testing anything.
-- 
Posted via http://www.ruby-forum.com/.
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to