Hi 2017-10-24 20:07 GMT+02:00 Herby Vojčík <he...@mailbox.sk>:
> Denis Kudriashov wrote: > >> Hi Herby. >> >> 2017-10-20 18:49 GMT+02:00 Herby Vojčík <he...@mailbox.sk >> <mailto:he...@mailbox.sk>>: >> >> >> I had this problem. I tried something like (though not exactly w/ >> this code): >> >> Foo stub new will: [ :aMessage | >> | original | >> original := MockExpectedOriginalCall new executeFor: aMessage. >> original stub. >> ^ original ] >> >> but IIRC it failed on doing #stub inside will: block. >> >> >> So the arguments of block in message #will: are expected to be arguments >> of stubbing message (not a full message instance). >> We can introduce new kind of expected action to automatically stub any >> result of message send: >> >> Foo stub new willStubRealResult. >> > > Yeah, exactly, something like that is useful. > > With help of new subclass of MockExpectedOriginalMethodCall: >> >> MockExpectedMethodResultStub>>executeFor: anOccurredMessage >> >> realMethodResult := super executeFor: anOccurredMessage. >> >> realMethodResult stub. >> >> ^realMethodResult. >> >> MockExpectedMessage>>willStubRealResult >> >> self will: MockExpectedMethodResultStub new >> > > Actually I tried this path myself but it failed badly during doing the > sub-#stub with lots of "go one metalevel down" etc. calls in stack, so I > gave up with "I don't understand this to make it work atm". > Probably you not used superclass execution logic where right metalevel logic is implemented (notice that in my example I call "super executeFor:") > > Does your solution actually work? > > And then you will be able specify expectations for all Foo instances: >> >> (Instance of: Foo) stub someMessage willReturn: #const >> > > As in, would `Foo new someMessage should be: #const`? In that case, great > and thanks. Yes for all questions. And new test is added for this feature > > > And you will be able assert any message which was sent to Foo instances: >> >> (Instance of: Foo) should receive someRequiredMessage which should >> equal: #expectedValue >> >> I committed this code to the dev branch. But I am wondering that such >> kind of behaviour is really needed. Probably it is useful as you ask >> about it. >> > > Herby > >