Mock Objects
stéphane ducasse
ducasse at iam.unibe.ch
Wed Jun 28 08:10:45 UTC 2006
I see nice....
I really like the idea to teach something useful to these objects :)
On 27 juin 06, at 18:54, Torsten Bergmann wrote:
> Hi Stef,
>
> the MockObject class from Chad is just a simplified version of the
> Teachable
> package I wrote about before. Teachable is able to handle more cases.
>
> see http://astares.blogspot.com/2005/04/teaching-behavior.html
>
> Since Teachable does not implement #initialize (like it is the case
> in Chads MockObject class) you
> are also able to teach the mock how to behave when an initialize
> method is sent
> to it.
>
> Just download the package using SM and have a look at the provided
> test case.
> Teachable is also more intention revealing. Instead of just working
> with blocks you can write Chads example with Teachable as:
>
> cart := Cart new.
> item := Teachable new.
> item whenSend: #total return: 2.99.
> cart add: item
> ...
>
>
> But as I warned in the previous email: creating dynamic mock objects
> (using either Chads code or the Teachable package) is sometimes
> dangerous.
>
> Think of testing persistence layer code in an application. If you
> want to get
> the tests running without having an actual database connection you
> can mock it.
> You can either either teach an object dynamically how to behave
> like the real
> DB connection class or implement the mock also as a class with the
> same signature.
>
> In such a case I would prefer to implement a real mock class since
> it can become
> a nightmare to debug the code with the #doesNotUnderstand: trick
> (especially when it
> uses blocks). It is also hard if you refactor the mocked code -
> this always means
> to refactor the mock object in a similar way.
>
> The more behavior/logic to mock the better it is to implement a
> special mock class
> with a similar interface. We just need better tools.
>
> Smalltalk with it's dynamic nature is very powerful - especially
> for testing. Think of
> a general mock framework where mocks can dynamically created from
> the "mocked object"
> or where one can use SUnit to even test the mock:
>
> "self assert: (aMockObject behavesLike: mockedObject)".
>
>
> Bye
> Torsten
>
> --
>
>
> "Feel free" – 10 GB Mailbox, 100 FreeSMS/Monat ...
> Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail
>
More information about the Squeak-dev
mailing list
|