views:

197

answers:

3

I am looking for TDD resources that are specific to Rails.

I've seen the Rails Guide: The Basics of Creating a Rails Plugin which really spurred my interest in the topic.

I have the Agile Development with Rails book and I see there's some testing-related information there. However, it seems like the author takes you through the steps of building the app, then adds testing afterward. This isn't really Test Driven Development.

Ideally, I'd like a book on this, but a collection of other tutorials or articles would be great if such a book doesn't exist.

Things I'd like to learn:

  • Primary goal: Best Practices
  • Unit testing
  • How to utilize Fixtures
    • Possibly using existing development data in place of fixtures
      • What's the community standard here?
  • Writing tests for plugins
  • Testing with session data
    • User is logged in
    • User can access URL /foo/bar
  • Testing changes in data
    • Author updates post
    • Product status changes to back order
    • User buys product (behavior?)
      • User is logged in
      • User has valid address and valid credit card
      • Order record is made
      • Credit Card transaction history updated
      • Send email to user
  • Testing success of sending email
  • Testing AJAX
    • Possibly testing general jQuery functionality (Interface elements, etc)
  • RSpec
    • What place does RSpec have in a Rails app
  • The future of testing
    • Where is testing going? What things are on their way out?
    • What patterns will be used in Rails 3?

Thanks for any help!

A: 

Awhile back I read and worked through "Beginning Ruby on Rails E-Commerce: From Novice to Professional": http://apress.com/book/view/9781590597361

Perhaps a bit dated now, but the TDD-related material should still be quite applicable.

Adam Bernier
+1  A: 

The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends. Focuses on BDD rather than TDD, but that's the whole point of RSpec and Cucumber. Not entirely specific to Rails, but has several chapters dedicated to it. Well written and up to date (though still in beta).

zetetic
How does BDD compare to TDD? Is their arguments that suggest one is better than the other? Or do they simply cover different things?
macek
I was going to suggest this too - really the state of the art in the Rails world. BDD and TDD are closely related, each just approaches the same problem from a different angle. rSpec is really a testing framework built on a DSL that produces human-readable "intentions".
Toby Hede
That's a good description. I'd say also that TDD approaches testing from an inside-out perspective, ie. that of the coder, whereas BDD approaches testing from an outside-in perspective -- the perspective of the stakeholder or customer. The output of the better BDD tools is darned close to a requirements specification that can be handed to a client.
zetetic
A: 

Some of your questions are answered in different episodes of the Railscasts by Ryan Bates. Things like RSpec, Cucumber, factories instead of fixtures, Pickle, ...

Gabriel Ščerbák