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