Perché questo test (banale) Unità venendo a mancare?
Domanda
Questa è stata presa quasi alla lettera da IBM Mastering Grails serie.
DateTagLib.groovy:
class DateTagLib {
def thisYear = {
out << Calendar.getInstance().get(Calendar.YEAR)
}
}
DateTagLibTests.groovy:
class DateTagLibTests extends TagLibUnitTestCase {
def dateTagLib
protected void setUp() {
super.setUp()
dateTagLib = new DateTagLib()
}
void testThisYear() {
String expected = Calendar.getInstance().get(Calendar.YEAR)
assertEquals("years do NOT match", expected, dateTagLib.thisYear())
}
protected void tearDown() {
super.tearDown()
}
}
uscita grails test-app DateTagLib
:
-------------------------------------------------------
Running 1 unit test...
Running test DateTagLibTests...
testThisYear...FAILED
Tests Completed in 359ms ...
-------------------------------------------------------
Tests passed: 0
Tests failed: 1
-------------------------------------------------------
Ho provato a corrispondere i tipi (int / lungo / String), ma sto ancora sbattere la testa contro il muro.
Questo test ha esito negativo anche:
void testThisYear() {
long expected = Calendar.getInstance().get(Calendar.YEAR)
assertEquals("years do NOT match", expected, (long) dateTagLib.thisYear())
}
Soluzione
Prova il seguente invece
class DateTagLibTests extends TagLibUnitTestCase {
void testThisYear() {
String expected = Calendar.getInstance().get(Calendar.YEAR)
tagLib.thisYear()
assertEquals("years do NOT match", expected, tagLib.out)
}
}
Il tuo codice originale ha 2 problemi:
- Non si dovrebbe istanziare
DateTagLib
esplicitamente. E 'già disponibile attraverso una proprietà della classe di test chiamatotagLib
-
thisYear
non restituisce il valore dell'anno, scrive aout
. All'interno di un test è possibile accedere al contenuto scritto con l'uscita tramitetagLib.out
Altri suggerimenti
out << Calendar.getInstance().get(Calendar.YEAR)
pone il risultato in out
, se si desidera verificare questo uso def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow