On Oct 19, 2008, at 10:31 pm, Caius Durling wrote:

Funny you should post this, I picked up merb today as well (seeing as the API is finally frozen) and was thinking about posting to see if anyone else was.

Well, I've done a bit more research (asking around on the Merb list), and it seems the best practice* in Merbland is to use controller specs in much the same way as Rails integration tests[1]. While I see the point that you should test behaviour not implementation, I think that goes a *little* too far. In short, it's not recommended to do the equivalent of:

  it "should create a new, unsaved person on GET to create" do
    Person.should_receive(:new).and_return(@person)
    get 'create'
  end

There is an API for this though[2], and it was deprecated as of RC1, but has now apparently been reintroduced.

Lawrence Pit on the merb list explains the syntax:
     # ==== Example
     #   dispatch_to(MyController, :create, :name => 'Homer' ) do
|controller|
     #     controller.stub!(:current_user).and_return(@user)
     #   end


And I assume it works similarly with the #get, #post etc. (I have yet to try it though, and I can't visualise a clean way to write specs with it.)


Anyway the whole discussion provoked me to crystallise my thoughts on Ruby web BDD, which I decided to blog[3], and I thought it may be of interest to people here, in case there's yet a third "right way" of doing things.

(If anyone finds this of interest, let me know. If so, I might start an "Adventures in Merb BDD" series - or something - on my blog.)


Ashley


* I've padded up in anticipation of the chair I know Aslak will hurl when he reads that ;o)

[1] http://www.slideshare.net/wycats/testing-merb-presentation
[2] 
http://merbivore.com/documentation/0.9.9/doc/rdoc/merb-core/index.html?a=C00000147&name=RequestHelper
[3] http://aviewfromafar.net/2008/10/20/web-app-bdd-thoughts-as-i-move-to-merb


--
http://www.patchspace.co.uk/
http://aviewfromafar.net/

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to