Для интеграционного теста мне нужно намеренно иметь .save()
, чтобы протестировать соответствующее else
-обусловление.
Мой тестируемый класс делает это:
Из UserService.groovy:
User user = User.findByXyz(xyz)
if (user) {
// foo
if (user.save()) {
// bar
} else {
// I WANT TO GET HERE
}
}
Подходы, которые я до сих пор пробовал, потерпели неудачу:
То, что я пробовал в UserServiceTests.groovy:
def uControl = mockFor(User)
uControl.demand.save { flush -> null } // in order to test a failing user.save()
def enabledUser = userService.enableUser(u.confirmationToken)
uControl.verify()
// or the following:
User.metaClass.'static'.save = { flush -> null } // fails *all* other tests too
Как правильно перейти к блоку else из интеграционного теста?