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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top