On Aug 7, 2010, at 4:10 PM, David Chelimsky wrote:

> Hey all,
> 
> It turns out that if you have
> 
> * Rails (2 or 3)
> * Ruby-1.9
> * a model named Message
> * let(:message) or def message in an example group
> * a Rails assertion in an example in that group
>  * note that rspec-rails' matchers delegate to Rails' assertions
> 
> You'll get an error saying "wrong number of arguments (1 for 0)"
> 
> This is because the rails assertion, which, when running with Ruby-1.9, 
> delegates to Minitest::Assertions#assert_block, which delegates to a 
> message() method that it defines. So the message() method defined by let() 
> overrides the message() method in the Assertions module, and results in 
> unexpected and undesirable outcomes.
> 
> So - what should we do? I don't think changing Minitest is really an option, 
> as too many assertion libraries already wrap Minitest assertions. I don't 
> think RSpec should be in the business of monitoring methods end-users define 
> to make sure they're not overriding pre-existing methods (what if you 
> override a method intentionally?). The only thing I'm left with is document 
> this particular case and hope for the best, but that feels unsatisfactory as 
> well.
> 
> Recommendations? Words of wisdom?

FYI - here's the issue that spawned this thread: 
http://github.com/rspec/rspec-rails/issues/152
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to