2016-08-27 2 views
1

В функциональных тестах на Yii2, существует метод amLoggedInAs($user)Как зарегистрироваться в приемочном тесте без фактического перехода на страницу входа и ввода ваших учетных данных?

$I->amLoggedInAs(
    User::find()->where('id = 1')->one() 
); 

Но для приемочных испытаний, не существует такой метод. Большинство моих тестов требуют, чтобы пользователь вошел в систему, и единственный способ, с помощью которого я могу войти в систему, - это программно перейти на страницу входа в систему и ввести ваши учетные данные, что будет довольно трудоемким, если будет повторяться для каждого теста.

Как я могу войти в систему во время приемочного испытания, не заходя на страницу входа? Собственно, я ожидал бы увидеть amLoggedInAs($user) в AcceptanceTester, а также в FunctionalTester.

+0

Почему не использовать страницу входа? –

+0

@EdvinTenovimas Требуется некоторое дополнительное время для входа, отправив форму для входа. Я бы ожидал увидеть способ по умолчанию, чтобы просто установить необходимые файлы cookie для входа в систему. – gvlasov

ответ

3

Нет, вы не можете.

Обычно вход в систему использует переменные сеанса, и вы не можете получить к ним доступ в приемочных тестах.
Если бы вы могли получить доступ к ограниченным страницам без фактического входа в систему, это было бы серьезным явлением безопасности на вашем веб-сайте, так что это хорошо, что вы не можете.

+1

Это правильный ответ. Тем не менее, вы можете повысить скорость входа в систему, сохранив текущий сеанс и повторно используя его для других тестов. См. Http://codeception.com/docs/06-ReusingTestCode#Session-Snapshot – Davert

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