[rspec-users] Asserting on a yield

David Chelimsky dchelimsky at gmail.com
Wed Mar 7 20:42:01 UTC 2012


On Wed, Mar 7, 2012 at 2:32 PM, Matt Wynne <matt at mattwynne.net> wrote:
>
> On 7 Mar 2012, at 18:16, David Chelimsky wrote:
>
> On Wed, Mar 7, 2012 at 11:56 AM, Matt Wynne <matt at mattwynne.net> wrote:
>
>
> On 7 Mar 2012, at 11:39, Morten Møller Riis wrote:
>
>
> On Mar 7, 2012, at 8:22 AM, Matt Wynne wrote:
>
>
>
> Hi all,
>
>
> I'm spec'ing a method that yields a value. Right now, I spec it like this:
>
>
>     result = nil
>
>     thing.do_stuff { |value| result = value }
>
>     result.should == expected
>
>
> This feels like too much ceremony. What I want to do is something more this:
>
>
>    thing.do_stuff.should yield_value(expected)
>
>
> Is there anything built into RSpec to let me do this? If not, how do other
>
> people test yields?
>
>
> cheers,
>
> Matt
>
>
>
> How about this?
>
>
> thing.do_stuff(&:to_s).should == expected
>
>
>
> Yes, that's a neat hack, but I'd prefer to be able to assert on the actual
>
> yielded value, instead of the result of calling an arbitrary method on it.
>
>
> thing.do_stuff(&:self) would be a bit less arbitrary :)
>
>
> It would, but does it work?
>
> I assumed it would too but here on my Ruby 1.9.2 it gives me a NoMethodError :(

I had assumed as well, and you know what they say about ASSuming!


More information about the rspec-users mailing list