Yes, but in that case you stub messages to the class itself. For your
example it means:

Something stub askForName willReturn: 'new'.

Something askForName should be: 'new'



2017-10-20 13:58 GMT+02:00 Peter Uhnák <i.uh...@gmail.com>:

> Thanks Denis, that did the trick.
>
> But I thought that I can also mock at the class level (at least it was
> shown in the docs).
>
> Peter
>
> On Sat, Oct 7, 2017 at 11:24 AM, Denis Kudriashov <dionisi...@gmail.com>
> wrote:
>
>> Hi Peter.
>>
>> You should stub instance instead of class:
>>      s := Something new.
>>      s stub askFor...
>>
>> 7 окт. 2017 г. 9:18 пользователь "Peter Uhnák" <i.uh...@gmail.com>
>> написал:
>>
>> Hi,
>>>
>>> maybe I am missing something fundamental, because this seems like an
>>> obvious scenario
>>>
>>> I have a class Something with two methods
>>>
>>> Something>>askForName
>>> ^ UIManager default request: 'Name'
>>>
>>> Something>>name
>>> ^ self askForName , ' suffix'
>>>
>>> Now I want to mock out askForName, so I can run it automatically in
>>> tests...
>>>
>>> I've tried just stubbing it...
>>>
>>> SomethingTest>>testRenameStub
>>> Something stub askForName willReturn: 'new'.
>>> Something new name should be: 'new suffix'
>>>
>>> however it still opens the window to ask for the name, so the original
>>> method is being called.
>>>
>>> Right now I have to stub it with metalinks, which doesn't play well with
>>> some tools (hapao)
>>>
>>> SomethingTest>>testRenameMeta
>>> | link newName |
>>> link := MetaLink new
>>> metaObject: [ 'new' ];
>>> control: #instead.
>>> (Something >> #askForName) ast link: link.
>>> [ newName := Something new name ]
>>> ensure: [ link uninstall ].
>>> self assert: newName equals: 'new suffix'
>>>
>>> Thanks,
>>> Peter
>>>
>>>
>

Reply via email to