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

David Chelimsky
2011-06-12T18:11:31Z

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.

Cheers,
David