[rspec-users] Can I use mocking in this way?

David Chelimsky dchelimsky at gmail.com
Sun Apr 4 00:00:57 EDT 2010


On Sat, Apr 3, 2010 at 10:45 PM, Julian Leviston <julian at leviston.net> wrote:
>
> On 04/04/2010, at 7:32 AM, David Chelimsky wrote:
>
>> On Sat, Apr 3, 2010 at 8:56 AM, Vojto Rinik <zero0xxx at gmail.com> wrote:
>>> Hello RSpec users!
>>> I have one abstract class and a few classes that inherit from that abstract
>>> one.
>>
>> Ruby doesn't have abstract classes. You can have a base class that you
>> don't _intend_ to instantiate directly, but there's nothing stopping
>> you from doing so, so it's not like an abstract class in java, which
>> you actually can't instantiate directly.
>>
>> I've seen some cases where the initialize method is made private so
>> you can't just call Foo.new, so it sort of feels like an abstract
>> class, but even in that case you can still use send() to instantiate
>> one in a test:
>>
>>  AbstractIshClass.send(:new)
>>
>
> How about if you overrode new and __new__ ?

Then override the override. AFAIK, there's really no preventing a
client from using an object however it chooses in Ruby. You can make
it difficult, but I'm pretty sure there's always a way around it.


More information about the rspec-users mailing list