从另一个类调用PHP方法

时间:2019-04-01 21:11:13

标签: php laravel methods laravel-dusk browser-testing

肯定已经回答了一次以上。但是我不了解我的情况。

所以我正在为项目的一部分编写浏览器测试。

功能是,有些用户可以登录,而其他则不允许。所以我写了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,因为仅使用另一个emai,testA或多或少都是相同的。

    public function testB(){
    $this->browse(function ($browser) {
        $browser
            // URL:
            ->visit('/login');
            // Login:
        $browser->visit(new LoginPage()){
        $this->guiLoginNormalUser($browser)
        }
        // Action:
            ->assertSee("Shop");
    });


}

我知道代码不起作用,但是我是OOP的新手,我不知道如何调用另一类的方法。

我希望有人能帮助我。

提前感谢

Janick

1 个答案:

答案 0 :(得分:0)

代替

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

这样做:

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

new LoginPage()周围的方括号对于以后使用->引用该新对象是必需的

基本上和做的一样

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

但是由于您不能传递两个语句,因此我们需要将其缩小为一个单一的行。