Hi
Personally I think the main reason to use #should: is that debugging is easier
as you can more easily restart the block in Debugger and replay the failing
messages. i.e. think of the #should: as lazily running the code whereas
#assert: as being eager because it evaluates the argument immediately.
Often I’ll use the #assert:equals: or #assert:description so that I can more
easily debug (by restarting the execution in the appropriate test method). I
have previously modified the #assert: method to be polymorphic with a boolean
or a block so I don’t have to use #should: e.g.
assert: aBoolean
aBoolean value ifFalse:
[self logFailure: 'Assertion failed'.
self defaultTestFailure signal: ‘Assertion failed'].
Apart from this I agree with all the comments on the doubts of using #should:.
Converting #should: calls to #assert: calls is probably not worth the effort
unless the #assert: is made polymorphic against a boolean or a block.
Cheers
Carlo
On 01 May 2014, at 12:52 AM, Nicolas Cellier
<[email protected]> wrote:
Hi,
I see many usage of #should: in SciSmalltalk tests that could simply be turned
into #assert: or eventually #assert:equals:
Why wanting to use a block?
Other than #should:raise: and #shouldnt:raise:, I don't really see the point of
#should: alone anyway...
IMO should: should be deprecated, less is more.
I'm possibly the author of several of these #should: sends, so don't take it
personnally ;)
P.S. or is it easier to restart the block in the Debugger?
I cross post to pharo-dev because it's a generic question, and there are a few
#should: sends in Pharo-3.0 too.