肯定已经回答了一次以上。但是我不了解我的情况。
所以我正在为项目的一部分编写浏览器测试。
功能是,有些用户可以登录,而其他则不允许。所以我写了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
答案 0 :(得分:0)
代替
new LoginPage()){
$this->guiLoginNormalUser($browser)
}
这样做:
(new LoginPage())->guiLoginNormalUser($browser)
new LoginPage()
周围的方括号对于以后使用->
引用该新对象是必需的
基本上和做的一样
$loginPage = new LoginPage();
$loginPage->guiLoginNormalUser($browser);
但是由于您不能传递两个语句,因此我们需要将其缩小为一个单一的行。