def Why Should I 'Test Rails Itself?'
posted_by :Amos, :on => 'March 21st, 2007'
I was reading Google Groups' Rails Group the other day when I ran into someone talking about why should I test the validates functions. Here is a quote from his email:
For example, what is the point of writing a unit test that simply tests a validate statement in the model? Yes, it's interesting (the first time, at least) that the test works and that, golly-gee, Rails works as advertised, as well, but is there any real use in doing this?
I can imagine a scenario where a I update Rails and suddenly a unit test that tests a Rails validator fails, but I expect the Rails development team would find this before me. Or is that too naive?
I just thought I would post my response for anyone who has the same question. Also, sorry if the format is bad or to quick, but I was trying to hurry when I wrote him the response.
Don't look it as testing Rails. You are testing your model on testing validates. Let's say you write this class:
class Person < ActiveRecord::Base validates_length_of :phone_number, :within => 7..10 ... endSo you write a test:
def test_phone_number_length_incorrect person = Person.new(:phone_number => '123456') person.valid? assert person.errors.invalid?(:phone_number), 'Invalid Phone Number Coming Back as Valid' endI think we would all agree that this test makes sure that a valid phone number passes.
Now not thinking you do a find and replace and replace all 7s with 8s or maybe number with numbers is more likely. So you have:
class Person < ActiveRecord::Base validates_length_of :phone_numbers, :within => 7..10 ... endNow you can place :phone_number => '12' into your database because you are now validating :phone_numbers.
If you have a test you run tests after you completed the find and replace, and this error would be caught right away. That is why you 'test Rails.'
Sorry, comments are closed for this article.