2014-10-28 1 views
1

В фильтре я использую request.getSession (false), чтобы получить сеанс, и все в порядке. Но когда я выполняю единичный тест для него, request.getSession (false) вернет null obj, и результат теста не будет выполнен. Если я хочу пройти тест, я должен использовать request.getSession (true).Грааля при использовании сеанса, как решить выбрать request.getSession (true) или request.getSession (false)

ответ

3

request.getSession (true) создает новый сеанс в том и только в том случае, если еще не существует. Если он уже существует, как в производственной среде, он использует тот, который доступен в контейнере сервлетов Java EE, который вызвал ваш код.

Другими словами, вы можете использовать request.getSession() (то же самое, что и getSession (true)) в любой рабочей среде, в которой вы в настоящее время используете request.getSession (false). Нет необходимости делать getSession (false) в производственная среда, getSession (true) всегда будет возвращать текущий если он существует. В тестовой среде вы, конечно же, получите пустой сеанс, который вам нужно будет заполнить любыми данными, необходимыми для запуска вашего теста. Но он должен поступать правильно в обоих местах.

Обратите внимание, что Grails имеет свой собственный объект сеанса, который оборачивает объект сеанса Java EE, так что вы можете использовать, что вместо того, чтобы ...

+0

### Большое спасибо –

Смежные вопросы