[rspec-users] testing framework in 44 lines of ruby

David Chelimsky dchelimsky at gmail.com
Sun Jun 12 14:11:31 EDT 2011

On Jun 12, 2011, at 12:52 PM, Patrick J. Collins wrote:

>> What do you mean by "on target"? Are you asking if the implementations are
>> the same, or similar? Or are you asking if attest meets the same goals as
>> RSpec?
> More specifically, I meant the way he implements describe blocks and the should
> method...
> It's difficult for me to tell from glancing through the actual RSpec code..
> For example I am confused by the implementation of 'should', since it calls:
> __should_for_example_group__
> But prior to that, it appears that __should_for_example_group__ is an alias for
> should, which looks to me like it would be recursively calling itself.

The code you're looking at is an extension to support one liners like this:

it { should do_something }

The original definition of should is in https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/expectations/extensions/kernel.rb, which is what adds the 'should' method to every object.

> In that post's example, their definition of should simply returns self as they
> described "it's just syntactic sugar to make the tests read better", but from
> looking at RSpec's code, it seems like there's a lot more going on, but I am
> not quite seeing the big picture...

RSpec's 'should' actually does something: it accepts a matcher and then tells the matcher to "match" against self. So no, they are not doing the same thing.

I'm not really sure what you're trying to evaluate here, but feel free to ask if you have any more specific questions.


More information about the rspec-users mailing list