Re: [rspec] Raising a mocked exception

2018-04-11 Thread Myron Marston
Ruby requires that any object passed to raise must be an exception class or
object:

2.4.3 :001 > raise Object.newTypeError: exception class/object expected
from (irb):1:in `raise'
from (irb):1
from /Users/myron/.rvm/rubies/ruby-2.4.3/bin/irb:11:in `'

As such, there’s no way to RSpec to be able to raise an arbitrary object.

Myron
​

On Wed, Apr 11, 2018 at 12:43 PM, Asher Shockley 
wrote:

> Is it possible to have a mocked method raise a mocked object instead of a
> real instance of Exception?
>
> https://gist.github.com/david-shockley-beeline/
> 008ea9122e62b051b3614d07a36fae23
>
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rspec+unsubscr...@googlegroups.com.
> To post to this group, send email to rspec@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/rspec/76d123cf-1fe0-4d88-b0fd-47a856253c22%40googlegroups.com
> 
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To post to this group, send email to rspec@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/CADUxQmv5n_2fYTHRtQpy9%3Dxeom1Cj8Mb4kUS7kQsx-a%3DM01hEA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [rspec] Raising a mocked exception

2018-04-11 Thread Myron Marston
In general, I recommend that you don't use test doubles in place of value
objects, and generally exception types are value objects.  (That is, they
carry data, but don't have any meaningful behavior and certainly shouldn't
perform any I/O).  Given that, I don't understand why you'd want to use a
test double in place of an exception.

The fact that you find yourself wanting to is probably communicating
something about your design, and you may want to take a step back to think
through why you're trying to use a double in place of an exception.
There's likely an alternate design that will work better.

HTH,
Myron

On Wed, Apr 11, 2018 at 1:34 PM, David Shockley 
wrote:

> Cool. That makes sense. My current work around is to use:
>
> allow_any_instance_of(Exception).to receive(:my_custom_method_ive_
> added_to_exception).and_raise
>
> Is there a better solution? Do you think it's possible to write an
> exception_double and exception_spy methods that build subclasses of
> Exception that support the double/spy methods directly, or is that
> unfeasible / a bad idea?
>
>
>
> On 11 April 2018 at 13:01, Myron Marston  wrote:
>
>> Ruby requires that any object passed to raise must be an exception class
>> or object:
>>
>> 2.4.3 :001 > raise Object.newTypeError: exception class/object expected
>> from (irb):1:in `raise'
>> from (irb):1
>> from /Users/myron/.rvm/rubies/ruby-2.4.3/bin/irb:11:in `'
>>
>> As such, there’s no way to RSpec to be able to raise an arbitrary object.
>>
>> Myron
>> ​
>>
>> On Wed, Apr 11, 2018 at 12:43 PM, Asher Shockley <
>> daemon.shock...@gmail.com> wrote:
>>
>>> Is it possible to have a mocked method raise a mocked object instead of
>>> a real instance of Exception?
>>>
>>> https://gist.github.com/david-shockley-beeline/008ea9122e62b
>>> 051b3614d07a36fae23
>>>
>>> Thanks
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "rspec" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to rspec+unsubscr...@googlegroups.com.
>>> To post to this group, send email to rspec@googlegroups.com.
>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>> gid/rspec/76d123cf-1fe0-4d88-b0fd-47a856253c22%40googlegroups.com
>>> 
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "rspec" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to rspec+unsubscr...@googlegroups.com.
>> To post to this group, send email to rspec@googlegroups.com.
>> To view this discussion on the web visit https://groups.google.com/d/ms
>> gid/rspec/CADUxQmv5n_2fYTHRtQpy9%3Dxeom1Cj8Mb4kUS7kQsx-a%3DM
>> 01hEA%40mail.gmail.com
>> 
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rspec+unsubscr...@googlegroups.com.
> To post to this group, send email to rspec@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/rspec/CACp6SzUuvsS23SRw%2Bgwws3jiTCv-NazBOa3NJGyKBvNt8FV1_g%40mail.
> gmail.com
> 
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To post to this group, send email to rspec@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/CADUxQmtYGyYV8CM6Vki0roDdUYkHK38H2EjkN%3DJ0kkbdjAmrnA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [rspec] Raising a mocked exception

2018-04-11 Thread David Shockley
Thanks for the excellent and informative reply. I'll have to think about
that :)

On 11 April 2018 at 13:58, Myron Marston  wrote:

> In general, I recommend that you don't use test doubles in place of value
> objects, and generally exception types are value objects.  (That is, they
> carry data, but don't have any meaningful behavior and certainly shouldn't
> perform any I/O).  Given that, I don't understand why you'd want to use a
> test double in place of an exception.
>
> The fact that you find yourself wanting to is probably communicating
> something about your design, and you may want to take a step back to think
> through why you're trying to use a double in place of an exception.
> There's likely an alternate design that will work better.
>
> HTH,
> Myron
>
> On Wed, Apr 11, 2018 at 1:34 PM, David Shockley  > wrote:
>
>> Cool. That makes sense. My current work around is to use:
>>
>> allow_any_instance_of(Exception).to receive(:my_custom_method_ive_
>> added_to_exception).and_raise
>>
>> Is there a better solution? Do you think it's possible to write an
>> exception_double and exception_spy methods that build subclasses of
>> Exception that support the double/spy methods directly, or is that
>> unfeasible / a bad idea?
>>
>>
>>
>> On 11 April 2018 at 13:01, Myron Marston  wrote:
>>
>>> Ruby requires that any object passed to raise must be an exception
>>> class or object:
>>>
>>> 2.4.3 :001 > raise Object.newTypeError: exception class/object expected
>>> from (irb):1:in `raise'
>>> from (irb):1
>>> from /Users/myron/.rvm/rubies/ruby-2.4.3/bin/irb:11:in `'
>>>
>>> As such, there’s no way to RSpec to be able to raise an arbitrary object.
>>>
>>> Myron
>>> ​
>>>
>>> On Wed, Apr 11, 2018 at 12:43 PM, Asher Shockley <
>>> daemon.shock...@gmail.com> wrote:
>>>
 Is it possible to have a mocked method raise a mocked object instead of
 a real instance of Exception?

 https://gist.github.com/david-shockley-beeline/008ea9122e62b
 051b3614d07a36fae23

 Thanks

 --
 You received this message because you are subscribed to the Google
 Groups "rspec" group.
 To unsubscribe from this group and stop receiving emails from it, send
 an email to rspec+unsubscr...@googlegroups.com.
 To post to this group, send email to rspec@googlegroups.com.
 To view this discussion on the web visit https://groups.google.com/d/ms
 gid/rspec/76d123cf-1fe0-4d88-b0fd-47a856253c22%40googlegroups.com
 
 .
 For more options, visit https://groups.google.com/d/optout.

>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "rspec" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to rspec+unsubscr...@googlegroups.com.
>>> To post to this group, send email to rspec@googlegroups.com.
>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>> gid/rspec/CADUxQmv5n_2fYTHRtQpy9%3Dxeom1Cj8Mb4kUS7kQsx-a%3DM
>>> 01hEA%40mail.gmail.com
>>> 
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "rspec" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to rspec+unsubscr...@googlegroups.com.
>> To post to this group, send email to rspec@googlegroups.com.
>> To view this discussion on the web visit https://groups.google.com/d/ms
>> gid/rspec/CACp6SzUuvsS23SRw%2Bgwws3jiTCv-NazBOa3NJGyKBvNt8FV
>> 1_g%40mail.gmail.com
>> 
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rspec+unsubscr...@googlegroups.com.
> To post to this group, send email to rspec@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/rspec/CADUxQmtYGyYV8CM6Vki0roDdUYkHK38H2EjkN%3DJ0kkbdjAmrnA%
> 40mail.gmail.com
> 
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 

[rspec] Raising a mocked exception

2018-04-11 Thread Asher Shockley
Is it possible to have a mocked method raise a mocked object instead of a 
real instance of Exception?

https://gist.github.com/david-shockley-beeline/008ea9122e62b051b3614d07a36fae23

Thanks

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To post to this group, send email to rspec@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/76d123cf-1fe0-4d88-b0fd-47a856253c22%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [rspec] Raising a mocked exception

2018-04-11 Thread David Shockley
Cool. That makes sense. My current work around is to use:

allow_any_instance_of(Exception).to
receive(:my_custom_method_ive_added_to_exception).and_raise

Is there a better solution? Do you think it's possible to write an
exception_double and exception_spy methods that build subclasses of
Exception that support the double/spy methods directly, or is that
unfeasible / a bad idea?



On 11 April 2018 at 13:01, Myron Marston  wrote:

> Ruby requires that any object passed to raise must be an exception class
> or object:
>
> 2.4.3 :001 > raise Object.newTypeError: exception class/object expected
> from (irb):1:in `raise'
> from (irb):1
> from /Users/myron/.rvm/rubies/ruby-2.4.3/bin/irb:11:in `'
>
> As such, there’s no way to RSpec to be able to raise an arbitrary object.
>
> Myron
> ​
>
> On Wed, Apr 11, 2018 at 12:43 PM, Asher Shockley <
> daemon.shock...@gmail.com> wrote:
>
>> Is it possible to have a mocked method raise a mocked object instead of a
>> real instance of Exception?
>>
>> https://gist.github.com/david-shockley-beeline/008ea9122e62b
>> 051b3614d07a36fae23
>>
>> Thanks
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "rspec" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to rspec+unsubscr...@googlegroups.com.
>> To post to this group, send email to rspec@googlegroups.com.
>> To view this discussion on the web visit https://groups.google.com/d/ms
>> gid/rspec/76d123cf-1fe0-4d88-b0fd-47a856253c22%40googlegroups.com
>> 
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rspec+unsubscr...@googlegroups.com.
> To post to this group, send email to rspec@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/rspec/CADUxQmv5n_2fYTHRtQpy9%3Dxeom1Cj8Mb4kUS7kQsx-a%
> 3DM01hEA%40mail.gmail.com
> 
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To post to this group, send email to rspec@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/CACp6SzUuvsS23SRw%2Bgwws3jiTCv-NazBOa3NJGyKBvNt8FV1_g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.