One of the things that turned me on to BDD and RSpec was speccing views first, that the desired end would drive the development. In previous projects while using Test::Unit I would try to make educated guesses as to what would be needed in the model and controllers to derive the view without actually writing the view until afterwards. This is all because testing relied on each previous layer working for the next to work, first models, then controllers, then views. And while for the most part the educated guesses panned out, and I'd do the models/controllers/views incrementally, I'd repeat a specific process a lot.
Test/write model(s) Test/write controller(s) Test/write view(s)...oops, I forgot something or I need some extra functionality out of the model (or controller) which I didn't guess the view would need. Lets go back to the model to test/add the functionality Lets test/add functionality in the controller to include this Lets test the functionality in the view that we had to go back and write support code for (if you even do this with Test::Unit, flooding your functional tests with ugly ugly ugly tests) Rinse and repeat, quickly trying to switch contexts from models to controllers to views. While testing helps you predict failures when making changes, it's not perfect, and predicting problems in the views is even more difficult with the current state of view testing in Test::Unit. While it is still rather agile, and changing the contexts isn't really much of a switch in this case, I think a lot could be avoided by doing views first and letting it drive the controllers and models. Then the cycle of incremental additions is to add features instead of adding things you forgot. Adding value, rather than recovering intended functionality that wasn't foreseen to be needed in your views. Maybe it's all in my head, but I enjoy adding new functionality more than spending time going back and adding backend functionality that wasn't foreseen to be needed by the frontend. So what am I on about? Well, I'm having trouble doing just that. I want to do View-Driven-Development by Behavior-Driven-Development, but I'm stumped really where to begin. Ideally I'd like to see a tutorial or something that walks though it, or browse through some projects using RSpec for the views, but I can't seem to find any. Maybe I'm not looking hard enough or I don't know where to look. Could anyone help me with this? Nathan "fowlduck" Sutton P.S. Excerpt from my crappy blog, if it matters, http:// www.saynotomilk.com/ _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users