I really agree with the topic starter. I've always done the rspec testing with all layers in isolation, a bit like the first example. Now for my latest project I went a bit for a more TDD approach, sending a request to a controller and testing the full stack, including the dynamic bits of the layout. It really helped me getting a quick start. Now I don't know how this will work out on the long term, I'll probably write some additional tests on the model level to assure workings with different variables.
I found out that I was wasting way too much time trying to practise and especially trying the come up with the best theory behind BDD, while I just should have get started and make things work. On Fri, Mar 14, 2008 at 7:08 PM, __iso __ <[EMAIL PROTECTED]> wrote: > Zach Dennis wrote: > > When I write software for myself I tend to flip flop. Sometimes I am > > writing things to learn or play and I don't test. > > I did that on a recent small project and I was amazed at how fast I was > able to get things done. > > > Here's another perspective to look at it from. When you write testable > > and tested software you spend less time coming back to it to track > > down and fix erroneous bugs. There is a much higher risk you will have > > to track down and fix erroneous bugs when you don't test (or don't > > test well there is a difference). > > One of the issues that I have had a couple times is that since I am > writing the tests and the corresponding code in a serial fashion, > sometimes my mind is off tangent and I write a test that is incorrect, I > then write the corresponding code to allow the incorrect test to pass. > And voila I have given myself confidence that everything is in working > order since I tested it, but it is wrong. > > I believe, that one of the reasons for this is that I am writing too > many tests, and because of that the tests start to lose their meaning. > The tests become a series of tasks that I hastily try to place a check > next to so I can feel I am working efficiently and move on to the next > one. I think cutting down on the number of tests I write will allow me > to better ensure the tests I have are required and correct. > > I am beginning to think that if a person checks the code to test code > ratio more than once a week they may be testing for the wrong reason. > > > > First thing: do not stub or mock expect the object under test. > > > > When you're testing a controller do not "stub!" the controller and do > > not > > "should_receive" the controller. This removes the value you get for > > testing > > the controller itself. There are exceptions to this rule, and this is > > largely > > because people violate the use of mixins. That is for another > > conversation though. > > What would you recommend instead? Since the before_filter contains a > login_required check I have to stub something to allow the test to be > completed. > > > > So when the application gradually becomes more complex do you think > > you'll eventually > > get to a point and say, "well I need to test this now?". Unfortunately > > even if you do > > do that when you get to point there's a really good chance you didn't > > write the code > > for testability, so the barrier to test is much higher, and it's > > easier for people to > > give in and not test at this point because it's now to difficult to > > test, and they can't > > spend a long time fixing bad code they've written. > > Good point. I guess my confusion is to whether testing should exist > where there is really no logic. Take an update controller method: > > @user = User.find(params[:id]) > if @user.update_attributes(params[:user) > flash[:success] = "..." > redirect_to admin_users_url > else > render :action => :index > end > > Pretty simple stuff. Is it worth 40 lines of test code? That is what I > am wondering, because I don't think so. > > > Testing is not about developer enjoyment. It's about producing high > > quality > > low bug software in a way that allows you to sustain a consistent > > development > > pace over the lifetime of the project. > > I find that the issue with writing more tests than are required is that > things become more brittle. One small change results in 10 failed tests > and 20 minutes of work to clean up, and that is not enjoyable. I think > that writing tests should be enjoyable since that is what it takes for > me to keep doing them. > > > I think you're experiencing growing pains. > > Adolescence all over again :) > > Thank you for posting your > > concerns and questions. I used to have some of the same questions > > you're having. Hopefully > > my response has been helpful to raise some counter arguments to your > > concerns, > > Input from experienced people always allows me to look at things from a > different angle. > > Thanks Dennis. > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users