On Tue, Aug 31, 2010 at 9:01 PM, Panu Suominen
<panu.j.m.suominen@gmail.com> wrote:
Hi all,
I am quite new to smalltalk and I am probably having "cultural"
difficulties. I mostly work with Java.
So it is possible that there is trivial answer for my question or my
question is just wrong. But here
it goes.
I am implementing object that should make a call to some other object.
I need to test that the
caller works correctly based on the return value it receives. So
basically the code and the test
looks like this and I need to fill the XXXX part:
Object>>doSomething
� �result:=innerObject makeACall.
� �"based on result do something"
Test>>test
� �"get bogus object for testing from somewhere"
� �mockForTest := XXXX.
� �(Object new)
� � � �innerObject: mockForTest.
� � � �doSomething.
� �"check that something was done."
Something hacky can be do something like this:
Test>>test
� �"get bogus object for testing from somewhere"
SystemChangeNotifier uniqueInstance doSilently: [
��� ��� mockClass
:= Object
��� ��� ��� subclass: #MockForTest
��� ��� ���
instanceVariableNames: ''
��� ��� ��� classVariableNames: ''
���
��� ��� poolDictionaries: ''
��� ��� ��� category: self class
category.
MockForTest compile: 'makeACall
�� ^ ''holaaaa'' '
�].
� �mockForTest := MockForTest new.
� �(Object new)
� � � �innerObject: mockForTest.
� � � �doSomething.
� �"check that something was done."
I didn't check with an email, but it should work. You can also add #makeACAll� in an already existing class. Suppose I do it in TestCase:
TestCase compile: 'makeACall
�� ^ ''holaaaa'' '
� mockForTest := TestCase new.
� �(Object new)
....
Of course, a real project for mocking would be muuuch better.
�
I am used to resolve this kind of problems using mock objects. I
tought it would be easy to implement
in smalltalk too because it is dynamic language. However with my limited
searches I did not found much usable code or examples how to do it.
So, my question is: is there some easy way to resolve this problem or
does it require
a bigger library? If it does, is there a library already for that?
--
Panu
_______________________________________________
Pharo-users mailing list
Pharo-users@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users