0

这肯定已经回答了不止一次。但我不明白我的情况。

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

功能是,有用户,可以登录和其他不允许的。所以我写了2个测试。测试A。尝试在没有权限的情况下登录,我检查是否可以看到“出现问题”的弹出窗口。另一个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");
    });


}

我知道代码不起作用,但我是 OOP 新手,我不明白如何调用其他类的方法。

我希望有一个人可以帮助我。

提前致谢

雅尼克

4

1 回答 1

0

代替

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

去做:

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

周围的括号new LoginPage()是必要的,以便以后能够引用该新对象->

和做的基本一样

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

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

于 2019-04-01T21:46:18.007 回答