On 8 Aug 2010, at 16:38, David Chelimsky wrote:

> 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

Can you use the Assertions module some other way than mixing it into the 
example (thereby polluting it with the Assertions module's methods?)

> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

http://blog.mattwynne.net
+44(0)7974 430184

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to