I just saw Marcel's change to assert_difference that changes the method API to take a string param that is evaled in a lambda.
http://dev.rubyonrails.org/changeset/6693
I much preferred the old API, since it's simple enough to pass a lambda. Passing a string means the lambda is in the wrong scope and doesn't have access to objects in the test case scope.
For an example of how I was using the old API:
http://blog.hasmanythrough.com/2007/5/2/getting-arbitrary-with-assert_difference