2016-10-22 6 views
1

В моей программе используется глобальная обработка ошибок. Когда я использую fakeRequest() для проверки, он выдает исключение вместо запуска обработчика ошибок. Я пропустил какую-то конфигурацию? Или как я могу проверить свой глобальный обработчик ошибок.Play 2.5.x обработка ошибок junit с помощью fakeRequest

Ниже мой текущий код:

Контроллер:

public class MyController { 
    public Result MyService() { 
     if (true) throw new RuntimeException("exception"); 
    } 
} 

ErrorHandler:

@Singleton 
public class MyErrorHandler extends DefaultHttpErrorHandler { 

    @Inject 
    public MyErrorHandler (Configuration configuration, Environment environment, OptionalSourceMapper sourceMapper, Provider<Router> routes) { 
    super(configuration, environment, sourceMapper, routes); 
    } 

    @Override 
    public CompletionStage<Result> onServerError(Http.RequestHeader request, Throwable exception) { 
    return CompletableFuture.completedFuture(ok(exception.getMessage())); 
    } 
} 

Тест:

public class MyTest { 
    @Test 
    public void testMethod() { 
    Result result = route(fakeRequest("GET", "/MyService")); 
    assertEquals(OK, result.status()); 
    } 
} 

Примечание: При запуске приложения, ошибка обработка работая как ожидалось.

ответ

2

Отсутствие обработчика ошибок в единичном испытательном потоке по дизайну. Он должен быть таким.

С помощью простого маршрутизатора вы можете обойти эту проблему.

Эта ссылка может иметь некоторую помощь для обеих этих точек: https://github.com/playframework/playframework/issues/2484

Не повторять содержимое ссылки здесь.