On Wed, Sep 21, 2011 at 3:42 AM, Matt Wynne <m...@mattwynne.net> wrote:
> I've never used Wrong, only read about it--and I like the idea very much, I 
> must say. Is there any danger of adverse effects (other than an extra line 
> the Gemfile) if we have to use the Wrong RSpec adapter in the book alongside 
> the existing vanilla RSpec assertions?
>

There shouldn't be, but I'd love for more people to verify that. The
adapter source is at

https://github.com/sconover/wrong/blob/master/lib/wrong/adapters/rspec.rb

(It doesn't actually do much, just includes Wrong inside RSpec's
ExampleGroup. The bulk of that code is in case anyone uses the Wrong
feature "alias_assert" which allows users to define their own DSLy
name for assert. I like "expect" but RSpec already has its own
"expect"; David kindly provided a way to cleanly remove RSpec's
"expect" before defining my own, but I couldn't quite get it to work
so I'm still using the brute force way which just chops it out using
Ruby's "Module#remove_method" method. In any case, none of that is
relevant unless users go out of their way and call
"Wrong.config.alias_assert :expect, :override=>true" which most won't
do.)

There's a semantic issue in your eventually method that I'd like to
discuss. My wait_for[1] and friends take a *predicate* (in the form of
a block) and wait for it to return true(ish). Your eventually[2]
ignores the return condition, and merely waits for it to not raise an
error. I think using a predicate is more useful, and strictly no less
powerful since the waiter code will *also* wait for it to not raise an
error, so you could do *either* this

    eventually { rand(10) == 0 }

or this

    eventually { rand(10).should == 0 }

and if, after 2 sec or whatever, it keeps either being false or
raising an ExpectationNotMetError, then the waiter will itself raise
an ExpectationNotMetError.

IOW, should the following pass or should it fail?

    eventually { false == true }

 - A

P.S. (Lurkers please feel free to chime in too. :-)

[1] https://github.com/pivotal/selenium/blob/master/lib/selenium/wait_for.rb
[2] https://gist.github.com/1228927

-- 
Alex Chaffee - a...@stinky.com
http://alexchaffee.com
http://twitter.com/alexch
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to