On 30 Oct 2008, at 15:58, Zach Dennis wrote:
I know the above example breaks the one assertion per test guideline
people strive to adhere to, but I think it is ok. If there are more
examples that should be used to make sure find_thingy works then I'd
break out a separate describe block and have multiple 'it' examples,
It also goes to the database, which will make it a slow unit test. I
personally do pretty much the same thing myself mostly when working
with ActiveRecord, but it doesn't mean I'm comfortable with it. (And
it also doesn't mean our unit test suite is anything other than
shamefully slow)
I did experiment with a QueryApapter for this purpose which has worked
out quite well for us. You end up with code like this in the Controller:
products = Product.find(:all, Product::QueryAdapter.new(params).adapt)
You then have a QueryAdapter class to test which is solely responsible
for mapping web query params into database query params - so that's
where you put the logic to build your conditions, your limit etc, and
return them as a hash from QueryAdapter#adapt.
The family of QueryAdapters then become the one place where I'm
coupled to ActiveRecord's find method arguments, which is nice, rather
than having it sprinkled all over the controller code.
HTH,
Matt
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users