[rspec-users] I lost the RSpec fight

Kevin Williams kevwil at gmail.com
Sun Sep 16 10:18:52 EDT 2007

By all means, they should not ever try anything new. The people of
Earth should not have ever adopted the use of the electric light bulb
or the radio or the automobile or the airplane or the microwave or the
telephone or ... the Internet. No, don't adopt anything new, just
stick to the old ways of doing things. It's impossible for anyone to
improve on anything, right? Bah! Humbug!

Obviously, I wouldn't win that argument either, but that's because I'm
dumbfounded by those who fear change. Change happens whether you fear
it or not, so why stress everyone out? BDD is a better, clearer
expression of making sure the code meets the client's needs, why
choose an old, clunky interface? They choose the expressiveness of
Ruby but fear the expressiveness of RSpec? That doesn't make sense to
me. I suppose they insist on using MySQL and erb templates too, right?
Sheesh! (Fans of MySQL and erb, fret not - I'm just trying to make the
point that breaking from tradition is not to be feared or laughed at -
it's OK, really, lean back and let RSpec catch you. :)

Ubiquitous is not a permanent tag. Rotary phones used to be
ubiquitous. Internet Exploder used to be ubiquitous. Horse-and-buggy
transportation used to be ubiquitous. Rails is now a large framework
with a huge following. They can't switch everything around overnight
every time something better comes along. Luckily it is flexible enough
to allow us to use 'something better' when it does come along. New
templates, new test frameworks, new javascript frameworks, new ideas
on caching and concurrency, new ORM layers - just because Rails
defaults to one thing doesn't mean that's the only way to do something
and certainly doesn't mean that's the best way to do something.

Sorry for rambling on. I make a crappy argument here, but it's hard to
express that 'slaps my forehead and says "are you kidding me?!?"'
feeling. I hope I won't be flamed for being pro- new stuff and
pro-rspec in the rspec-users list. :)

On 9/16/07, Jay Levitt <lists-rspec at shopwatch.org> wrote:
> I've been working on a Rails project with one other developer; he was
> using Test::Unit, and I was using RSpec.  That works OK for a while, but
> obviously it starts causing pain when you have to check in two places to
> see if a piece of code is properly tested/spec'd, you can't use TextMate
> shortcuts to switch back and forth between code and test, you have to
> duplicate shared behaviors/test helpers, etc.
> So when we brought in a consulting team to add some manpower, we
> realized we had to switch to a single framework.  This is a team that's
> fairly experienced with Rails and active in the Rails community, but was
> quite opposed to choosing RSpec.
> Here are the arguments I heard against unifying on RSpec:
> * Test::Unit is ubiquitous.  Everyone knows it.  This is hard to
> counter; it comes with Rails and is the default.  Same reason many
> people use Prototype even though JQuery/dojo might suit them better.
> * For that reason, it's a lot easier to find examples of "how to do
> something" in Test::Unit than in RSpec.  That's true; several times I've
> had a bit of code that didn't fall nicely into the MVC hierarchy, and I
> wasn't sure how to build up the right context to test it in.  If I were
> using Test::Unit, I could just copy the equivalent tests from Rails
> core, but using RSpec I had to roll my own.
> * RSpec is BDD (hand-waving new different troublesome); we do TDD.
> We've covered that ground on this list many times; BDD is an extension
> and interpretation of TDD, not some newfangled crackpot theory.  But
> people don't know that.
> * The team had in fact investigated RSpec a few months ago, and decided
> they didn't like it.  Some of what they didn't like has been fixed in
> 1.0, but of course people aren't going to come running to re-examine
> each release, so the bitter taste remained:
> * #context was defined on Kernel.  Not sure if that's still true for
> #describe.
> * Not compatible with tools that expect Test::Unit output.  This
> would(could) be fixed with the runner integration that's been discussed.
> * Wasn't compatible with mocha/FlexMock.  Fixed now.
> But again, it came back to ubiquity, which is a pretty hard problem to
> overcome.
> Seems to me that the best way to get RSpec adopted is to find some more
> visible, prolific plugin programmers and evangelize them to start using
> RSpec, so it's not some "neat fringe thing", but a solid, respectable
> alternative to Test::Unit.
> Jay Levitt
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users


Kevin Williams

More information about the rspec-users mailing list