Smalltalk e asserzioni
-
21-08-2019 - |
Domanda
tryng alcuni smalltalk + TDD + "buone pratiche" che ho incontrato un blocco po 'brutta:
Come faccio a fare un'affermazione in GNU Smalltalk?
Sono solo in cerca di un semplice ifFalse: [Die]
genere di cose
Soluzione
Questo è il codice per affermare: da Squeak (che vi consiglio di utilizzare piuttosto che GNU):
assert: aBlock
"Throw an assertion error if aBlock does not evaluates to true."
aBlock value
ifFalse: [AssertionFailure signal: 'Assertion failed']
Altri suggerimenti
così come auto affermare: [... qualche blocco]
lavora per i blocchi e non blocchi, dal momento che l'invio # valore di oggetto restituisce di sé.
E 'stato suggerito in precedenza per aggiungere #assert:
a Object
, ma mi piacerebbe aggiungere #assert
a BlockClosure
(o qualsiasi altra cosa [] class
è in GNU Smalltalk).
assert
this value ifFalse: [AssertionFailure signal: 'Assertion failed']
e quindi utilizzare come in
[ value notNil ] assert.
[ value > 0 ] assert.
[ list isEmpty not ] assert.
eccetera.
E 'semplice. Nei tuoi metodi di prova che si scrive:
self assert: 1 + 1 = 2
Ma prima è necessario creare una classe di test come una sottoclasse di TestCase (in Squeak), ad esempio:
TestCase subclass: #MyTest
Qui si scrive metodi di prova, che i nomi deve sempre iniziare con 'test', per esempio:
testBasicArithmetics
self assert: 1 + 1 = 2