On Apr 22, 2009, at 4:25 AM, Amos King wrote:
I wasn't thinking about a gun. I was just wondering if there is some
underlying reason that I'm missing. Is there a background structure
that I'm not grasping? Is there a huge piece of functionality that
I'm missing? Is it faster than Test:Unit or Shoulda?
Amos(adkron)
Personally, I can't think of one single huge piece of functionality
that makes RSpec win over TestUnit, but it's a whole bunch of little
things.
It can be faster if you make use of mocks/stubs, and separation
between layers: you can test your controllers without having to render
the views.
Shoulda is good too. It adds some of the features that RSpec brought,
like contexts, but having used Shoulda for over a year and recently
using RSpec on a new project, I can say that I prefer RSpec overall...
keep in mind Shoulda's macros and matchers are available in RSpec too.
describe RSpec, "versus TestUnit" do
it { should read_fluently }
end
Yes, a lot of the most visible differences seem to be around the
syntax, but the point is that it helps you think more fluidly about
what you're actually trying to do. TestUnit adds mental baggage for up-
front testing and the tests have a backward-looking feel, in other
words, they read more like they're verifying what should have happened
after it's done. RSpec tests read more expressively as looking forward
to what you would like to achieve, what "should" happen.
While the tests are still pure ruby, they read almost like pure
English, especially if you take a little extra effort to encapsulate
some of the hairy logic into your own custom matchers. The specs can
convey their intent much more clearly, instead of only serving as
verification of your app's performance. Your spec suite becomes very
readable (to a developer at least) as behaviour documentation, without
needing to slow down to work it out too much. That's not to say you
can't write readable tests in Shoulda or TestUnit, but RSpec helps you
frame them better and convey what you mean more clearly.
Cheers,
Andrew Vit
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users