Hi Peter.
You should stub instance instead of class:
s := Something new.
s stub askFor...
7 окт. 2017 г. 9:18 пользователь "Peter Uhnák" <[email protected]> написал:
> 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
>
>