On 1 Aug 2010, at 3:43 PM, David Chelimsky wrote:

> shared_examples_for "blah" do |a,b|
>  ...
> end
> 
> it_should_behave_like "blah", 1, 2
> 
> That wouldn't have worked with the old implementation, but it would work 
> perfectly well now. This would also "just work" with hash-as-keyword-args:
> 
> shared_examples_for "blah" do |options|
>  it "blah #{options[:a]}" do
>    ..
>  end
> end
> 
> it_should_behave_like "blah", :a => 1
> 
> Now you can do this:
> 
> [1,2,3].each do |n|
>  it_should_behave_like "blah", :a => n
> end
> 
> And we can still use the customization block to define methods, hooks 
> (before/after) and let(). Now it just feels like the rest of RSpec.
> 
> Thoughts?

One thought: me.facepalm :)

The only thing it lacks is a DSL to define the requirements.  Would it still be 
desirable to be able to write:

  shared_examples_for "blah" do |options|
    require_argument options[:a]
    it "blah #{options[:a]}" do
      ..
    end
  end

Or some such?

Also, after staring at this for a while, I'm puzzled by something.  In this 
code:

  it_should_behave_like "blah", :a => 1

how does :a => 1 get passed to the "options" block, as `shared_block` in the 
code is never called with arguments?  Would this need another code change?  
(Apologies if I'm being thick, it's late and I should probably go to bed, but I 
wanted to review this first...)

Cheers
Ash

-- 
http://www.patchspace.co.uk/
http://www.linkedin.com/in/ashleymoran



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

Reply via email to