Падает тест, потому что logout происходит методом get

Всё про тестирование в Yii 2.0
Ответить
Vdomike
Сообщения: 5
Зарегистрирован: 2016.10.22, 14:47

Падает тест, потому что logout происходит методом get

Сообщение Vdomike » 2016.11.14, 21:28

Получается так, что, когда я вручную щелкаю по сайту, у меня logout получается нормально.
А когда я тестирую, то тест не проходит. Я делаю

Код: Выделить всё

$I->click('Выйти (username)'); 
и функциональный просто подвисает, а потом вываливается из-за нехватки памяти, а приемочный выдает все-таки информацию, что Failed asserting that /basic/web/index-test.php/site/logout--> Method Not Allowed (#405).
Перерыла интернет, узнала, что вроде это из-за ассетс происходит. Но 'yii\web\YiiAsset' у меня прописан, все Assets из web удалять тоже пробовала. Что еще может помочь? Что там за кулисами происходит-то?

Аватара пользователя
maleks
Сообщения: 1722
Зарегистрирован: 2012.12.26, 12:56

Re: Падает тест, потому что logout происходит методом get

Сообщение maleks » 2016.11.15, 08:25

Vdomike писал(а): Что там за кулисами происходит-то?
скорее что logout ожидается методом post. То что на сайте работает ссылкой, это не значит что гет запрос в реальности идет.

Аватара пользователя
samdark
Администратор
Сообщения: 9127
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Падает тест, потому что logout происходит методом get

Сообщение samdark » 2016.11.15, 15:54

maleks прав. В реальности там JavaScript, который шлёт POST. GET-ом логаутиться не стоит.

Vdomike
Сообщения: 5
Зарегистрирован: 2016.10.22, 14:47

Re: Падает тест, потому что logout происходит методом get

Сообщение Vdomike » 2016.11.15, 21:00

Ну, да, в общем, так и получается, что когда я вручную хожу по сайту, идет POST, как я понимаю, из-за этого кода "из коробки", в виджете Nav:
Html::beginForm(['/site/logout'], 'post').
А при тестировании, вероятно, этот фокус не работает, потому что посылается GET.
Вопрос, как обойти это, чего, куда моим тестам не хватает?

Аватара пользователя
samdark
Администратор
Сообщения: 9127
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Падает тест, потому что logout происходит методом get

Сообщение samdark » 2016.11.16, 01:24

М... ну или Selenium или отсылать POST.

Vdomike
Сообщения: 5
Зарегистрирован: 2016.10.22, 14:47

Re: Падает тест, потому что logout происходит методом get

Сообщение Vdomike » 2016.11.16, 14:27

Селениум-то ладно, но как мне функциональный пройти?
То есть, что это получается, что в таком виде я тесты вообще не пройду?
А как мне отсылать через POST в рамках виджета Nav, если то, как там сделано не работает?

Аватара пользователя
samdark
Администратор
Сообщения: 9127
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Падает тест, потому что logout происходит методом get

Сообщение samdark » 2016.11.16, 18:34

В рамках никак потому что в функциональных не работает JavaScript.

Vdomike
Сообщения: 5
Зарегистрирован: 2016.10.22, 14:47

Re: Падает тест, потому что logout происходит методом get

Сообщение Vdomike » 2016.11.16, 19:46

В общем, если кому понадобится, мне подсказали, как можно сделать в виджете Nav, чтобы обойтись без JavaScript.

Код: Выделить всё

$menuItems[] = '<li>'
        . Html::beginForm(['/site/logout'], 'post')
        . Html::submitButton(
                'Logout ('.Yii::$app->user->identity['username'].')', ['class' => 'btn btn-link btnlogout']
        )
        . Html::endForm()
        . '</li>'; 
Этот вариант у меня проходит и при ручном кликанье, и при тестировании.

Ответить