@ExpectedException в модульных тестах Грааля
-
22-09-2019 - |
Вопрос
Кто -нибудь использовал эту аннотацию в модульных тестах Грааля? Кажется, не сработал для меня. Спасибо. Дюймовый
Обновление: Последняя строка моего теста ниже делает ожидаемое исключение. Однако тест не удается (стека трассировка слишком большой для здесь ...). Я использую Grails 1.2 и запускаю тест в Eclipse Junit Runner. Может быть, Grails использует более раннюю версию Junit, чем 4?
/**
* Get the EC by a manager of a different company. Should throw exception
*/
@ExpectedException(ServiceAuthorizationException.class)
void testGetEcByNonOwnerManagerOfDifferentCompany() {
mockDomain(ExpenseClaim , [new ExpenseClaim(id:"1",narrative:"marksClaim", employee:userMark, company:dereksCompany)])
def authControl = mockFor(AuthenticateService)
authControl.demand.userDomain(1..1) {-> otherUserMgr }
authControl.demand.ifAllGranted(1..1) {String arg1 -> return "ROLE_COMPANYMANAGER".equals(arg1) } //returns true
def testService = new ExpenseClaimService()
testService.authenticateService = authControl.createMock()
def thrown = false
testService.getExpenseClaim("1")
}
Решение
В настоящее время поддерживается только JUNIT 3, поэтому используйте shouldFail()
вместо:
void testGetEcByNonOwnerManagerOfDifferentCompany() {
shouldFail(ServiceAuthorizationException) {
mockDomain(ExpenseClaim , [new ExpenseClaim(id:"1",
narrative:"marksClaim", employee:userMark,
company:dereksCompany)])
def authControl = mockFor(AuthenticateService)
authControl.demand.userDomain(1..1) {-> otherUserMgr }
authControl.demand.ifAllGranted(1..1) {String arg1 ->
"ROLE_COMPANYMANAGER".equals(arg1) } //returns true
def testService = new ExpenseClaimService()
testService.authenticateService = authControl.createMock()
testService.getExpenseClaim("1")
}
}
shouldFail()
На самом деле это более удобно, поскольку вы можете использовать его более одного раза на тест, и он возвращает сообщение об исключении, чтобы вы могли утверждать на основе сообщения, а также исключения.
Не связан с StackOverflow