#php #laravel #methods #laravel-dusk #browser-testing
#php #laravel #методы #laravel-dusk #тестирование браузера
Вопрос:
На этот вопрос определенно был дан ответ не один раз. Но я не понимаю, что это для моего случая.
Итак, я пишу браузерный тест для части нашего проекта.
Функция заключается в том, что есть пользователи, которые могут входить в систему, и другие, которым это запрещено. Итак, я написал 2 теста. TestA. пытается войти в систему без разрешений, и я проверяю, видно ли всплывающее окно «что-то пошло не так». Другой тестируемый является зарегистрированным пользователем. Я проверяю, может ли он добраться до страницы «магазин».
Итак, я написал метод в классе LoginPage.php
класс LoginPage.php
public function guiLoginUser(Browser $browser)
{
$browser->type('#email', 'normal.user______@hey.ch')
->type('#password', 'ThisCanBeWhatever2')
->click('#login');
}
public function guiLoginNoUser(Browser $browser)
{
$browser->type('#email', 'not.a.user______@nouser')
->type('#password', 'ThisCanBeWhatever')
->click('#login');
На данный момент наш проект не проверяет пароль, поскольку у нас нет доступа к базе данных.
Этот класс содержит testA и TestB. Я буду показывать только тест B, поскольку testA более или менее тот же, просто используется другой emai.
public function testB(){
$this->browse(function ($browser) {
$browser
// URL:
->visit('/login');
// Login:
$browser->visit(new LoginPage()){
$this->guiLoginNormalUser($browser)
}
// Action:
->assertSee("Shop");
});
}
Я знаю, что кодовая доза не работает, но я новичок в ООП, и я не понимаю, как вызвать метод другого класса.
Я надеюсь, что кто-нибудь сможет мне помочь.
заранее спасибо
Janick
Комментарии:
1.
(new LoginPage())->guiLoginNormalUser($browser)
должен это сделать!2. Эй, спасибо, кажется, это работает, я все еще получаю ошибки, но я буду пробовать себя для следующих шагов. Всегда задаешь глупые вопросы с простыми ответами 😉
3. Тогда я сделаю это ответом!
Ответ №1:
Вместо
new LoginPage()){
$this->guiLoginNormalUser($browser)
}
сделайте это:
(new LoginPage())->guiLoginNormalUser($browser)
квадратные скобки вокруг new LoginPage()
необходимы, чтобы иметь возможность ссылаться на этот новый объект позже с ->
В основном это то же самое, что и выполнение
$loginPage = new LoginPage();
$loginPage->guiLoginNormalUser($browser);
Но поскольку вы не можете передать два оператора, нам нужно сжать его до oneliner.
Комментарии:
1. Отлично, теперь понял 😉