Attila Magyar wrote
> I made up an example because it makes easier to talk about this

An easy example which comes up for me a lot is when I want to pretend it's a
certain DateAndTime. I'd like DateAndTime now to return a canned value.

I know all the theoretical arguments about how if I change my domain object
to really get the date from an atomic clock server, or a serial port light
sensor connected to a sun dial, my test will fail because I've tied it to a
duplicated implementation detail. However, I'm willing to accept that risk
because:
- in 5 years, I've only ever queried the current timestamp via "DateAndTime
now"
- the duplication can be controlled via abstraction e.g. MyTestCase>>#now:
aDateAndTime
- writing (pseudo-code) "DateAndTime can receive:#now; answers:
aDateAndTime":
  - is extremely easy
  - precludes me from muddying my domain class with a lot of test-only
hooks, like #clock: and #clock or #clockClass: and #clockClass (multiplied
by all such vectors)

For sure, there are times when this could be abused. But the spirit of
Smalltalk is to trust the programmer with the full power of the computer at
every level (e.g. private methods are only a suggestion).



-----
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/ANN-BabyMock-2-tp4748530p4756202.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.

Reply via email to