possible bug in grails using spock+controller handleException method
GoogleCodeExporter opened this issue · comments
Google Code Exporter commented
hi,
I'm using grails 2.3.5 and spock.
i got a particular configuration, and i'm facing some strange behavior with
spock tests.
in order to replicate the problem you can find a semplification on my project
here:
https://github.com/tamershahin/spockTest.git
this is the situation:
class TestController {
def index() {
...
throw new Exception('dummy')
}
def indexObj(IndexCommand command) {
...
throw new Exception('dummy')
}
def handleException(Exception e) {
if (Environment.current == Environment.DEVELOPMENT) {
log.debug 'Exception:: ', e
}
}
}
essentially, if i run a test with this code:
void "test with "() {
when: 'pass to the action a mocked commandObject'
def commandMock = mockCommandObject(IndexCommand)
commandMock.id = 1
controller.indexObj(commandMock)
then: "expected a Exception"
Exception ex = thrown()
assert ex
}
test pass without any problem (wrong, the exception is not propagated to
handleException)
if i run a test with this code:
void "test without "() {
when: 'call the action'
controller.index()
then: "expected a Exception"
Exception ex = thrown()
assert ex
}
test will fail with this message: Expected exception java.lang.Exception, but
no exception was thrown. this should be the correct behavior.
bref, if an action use commandObject the handleException is not executed.
this only in spock testes. in normal application run everything is fine.
Original issue reported on code.google.com by tamer.sh...@gmail.com
on 3 Feb 2014 at 9:31
Google Code Exporter commented
I do not think this is a Spock issue. I think this is a problem with incorrect
expectations being expressed in the test. See
http://grails.1312388.n4.nabble.com/possible-bug-using-spock-controller-handleEx
ception-method-td4653717.html.
Original comment by j...@jeffandbetsy.net
on 3 Feb 2014 at 4:05