Everyone seems to have their own testing recipe that works for them. My background is similar to yours - a long-standing PHP developer who doesn't use tests (but does a lot of manual white-box tests during development). I recently started writing my first performance-level app that gets paid for playing with Rails. Here are my thoughts after the first three months.
I also found Cucumber to be too complicated for me to start. I struggled with this for too long before finally realizing that I was too far from the actual testing structure. As soon as I got down to pure RSpec, everything became much clearer. However, now that I have written my first application with a robust test suite, I think that perhaps I could omit Cucumber in my next Rails recipe and feel more comfortable using it to test integration, still using RSpec for unit testing.
I developed RSpec's unhealthy craze when I finally understood this process. It's really nice to run these tests and see all the green ones. In fact, itβs even nice to see red, because it tells me what to do next.
I use Webrat by default for integration tests. I did not come across anything that Webrat could not solve, but I did not give Capybara a try, so maybe I just donβt know how bad it is.
I began to write my tests, following along with the Rails Tutorial Book, and in it the author says: "Since I am not partial for individual tests for views or helpers, which, in my opinion, were either fragile or redundant, our first step is to delete them. " (Page 93, paragraph 2). After writing a bunch of helper methods, I decided to go back and write separate helper tests for all of them. I still give up my tests in my controller tests, but I could see their separation in my next project. FWIW, I think you really should write tests for everything at some level, even if you just rely on your controller tests to use your views and / or your view tests to use your helper methods.
I use Factory Girl with this project, and I found it very useful and easy to use. I did not try the driver, but it seems he was popular. One thing that I will talk about is that when I first started writing my factories, I also used the FFaker stone to generate random content in every Factory object I created. At first it seemed nice to me, as the contents of the variable sometimes led me to find things that I missed during the development process (I canβt imagine a good example at the moment), but it also meant that I had to worry about truncating all returned FFaker data to fit the length restrictions in the model. It ended up being too cumbersome, so I deleted all this code and went using static lines for all my factories and only for required fields. Then, when I wanted to use a specific area, I would do it in my actual specifications. IMO, your factories should contain only enough data to create a valid object and no more.
Regarding ridicule, I only found a few places where I needed to mock something, but maybe I'm too new to Rspec to know that I am doing this wrong.
And finally, for specific examples, just look at GitHub, for example, Rails applications or open source Rails projects containing tests. Or follow along with the Rails tutorial, just like me. No matter what you decide to do, start as close to the metal as possible, and then try different gems / plugins / etc., always making sure that you can undo your changes if you decide that you don't like the results. I found that trying to start with a complete recipe (i.e. Suspenders, blue light, etc.) was too overwhelming. Starting with the Rails Rails app, I was able to try out various solutions (paperclip versus carrierwave, typus versus rails_admin, layout and design, etc.) to see which ones work for my personal preferences. Clearly, there is no perfect recipe for a Rails application, and everyone prefers a recipe - it's just an opinion.