Вопрос

Кто -нибудь использовал эту аннотацию в модульных тестах Грааля? Кажется, не сработал для меня. Спасибо. Дюймовый

Обновление: Последняя строка моего теста ниже делает ожидаемое исключение. Однако тест не удается (стека трассировка слишком большой для здесь ...). Я использую 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() На самом деле это более удобно, поскольку вы можете использовать его более одного раза на тест, и он возвращает сообщение об исключении, чтобы вы могли утверждать на основе сообщения, а также исключения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top