Paths in features
Been thinking about specifying paths in stories and steps, and the brittleness they can introduce to tests. This was prompted by a bug in rspecs 'render_template' matcher.
First of all the bug ...
This is rails testcode that works ok
This is the rspec equivalent
which throws the exception
wrong argument type nil (expected Regexp) (TypeError) /Library/Ruby/Gems/1.8/gems/rspec-rails-1.1.8/lib/spec/rails/matchers/render_template.rb:22:in `match' /Library/Ruby/Gems/1.8/gems/rspec-rails-1.1.8/lib/spec/rails/matchers/render_template.rb:22:in `matches?'
Paths Don't Belong In Stories
Feeling more convinced about this the more I think about it. Basically a specific path is an implementation detail which can change depending (obviously) on how you implement. So if you want to view some products your story might be something like
When I click products Then I should see products
This is more robust than
When I click products Then I should go to /products
In a similar way when writing the steps you should use the
products_path method rather than using '/products'