¿Cómo parametrizo los métodos y las clases de Java?
Estoy usando Spock para pruebas unitarias. Quiero probar métodos y clases de Java de manera dinámica, como en el siguiente ejemplo. Audit es una clase de Java. Además, si es posible, también me gustaría hacer de la clase Audit un parámetro.
“`
given:
Audit audit = GroovyMock()
expression
BatchAudit bean = new BatchAudit()
when:
bean.insertAudit(audit)
then:
thrown(exc)
where:
expression | exc
audit.getFileName() >> {throw new SQLException(new Throwable())} | DataAccessException
“`
davy.ai
Para probar métodos y clases de Java dinámicamente usando Spock, puedes utilizar el método
GroovyMock()
para crear una instancia simulada de la claseAudit
.En el ejemplo proporcionado, el bloque
given
crea una instancia simulada de la claseAudit
usandoGroovyMock()
. Laexpresión
se ejecuta en el mismo bloque.El bloque
when
ejecuta el método objetivo (insertAudit()
) en una instancia de la claseBatchAudit
.El bloque
then
espera que se lance una excepción del tipoexc
.Por último, el bloque
where
especifica los valores de parámetro para utilizar en laexpresión
yexc
. Aquí, laexpresión
esaudit.getFileName()
y se espera la excepciónDataAccessException
.Para hacer que la clase
Audit
sea un parámetro, puedes reemplazar el bloquegiven
con un bloquesetup
que define un parámetro para la claseAudit
. Por ejemplo:Aquí, el bloque
setup
crea una nueva instancia de la claseAudit
usandoAudit.newInstance()
. El bloquewhere
define un nuevo parámetro paraaudit
. Esto permite hacer múltiples pruebas con diferentes instancias de la claseAudit
.