Вызовите метод PHP из другого класса - PullRequest
0 голосов
/ 02 апреля 2019

На это определенно ответили не раз.Но я не понимаю его для моего случая.

Поэтому я пишу браузерный тест для части нашего проекта.

Функция в том, что есть пользователи, которые могут войти идругие, которые не допускаются.Итак, я написал 2 теста.TestA.пытается войти без разрешений, и я проверяю, отображается ли всплывающее окно "что-то пошло не так".Другой TestB - зарегистрированный пользователь.Я проверяю, может ли он добраться до страницы "магазина".

Итак, я написал метод в классе 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");
    });


}

Я знаю, что кодовая доза не работает, но я новичок в ООП и не знаюпонять, как вызвать метод другого класса.

Надеюсь, кто-нибудь сможет мне помочь.

Заранее спасибо

Дженик

1 Ответ

0 голосов
/ 02 апреля 2019

Вместо

 new LoginPage()){
    $this->guiLoginNormalUser($browser)
    }

сделать это:

(new LoginPage())->guiLoginNormalUser($browser)

скобки вокруг new LoginPage() необходимы, чтобы иметь возможность ссылаться на этот новый объект позже с ->

По сути, это то же самое, что и

$loginPage = new LoginPage();
$loginPage->guiLoginNormalUser($browser);

Но поскольку вы не можете передать два утверждения, нам нужно сократить его до простого.

...