1

我是 php 和黄昏的新手,但我尝试在黄昏时使用页面对象,我被卡住了,因为当我尝试添加页面对象进行测试时,phpstorm 告诉我“在 $this 中找不到方法 logInUserName ”。有人可以向我解释我错在哪里吗?

我有页面类:

<?php

namespace Tests\Browser\Pages;

use Laravel\Dusk\Browser;

class LogInPage extends Page
{
/**
 * Get the URL for the page.
 *
 * @return string
 */
public function url()
{
    return '/login';
}

/**
 *
 * @return void
 */
public function logInUserName(Browser $browser)
{
   $browser->type("#username", "lol");
}

}

我有测试课

use Tests\Browser\Pages\LogInPage;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
use PHPUnit\Framework\Assert;

class ExampleTest extends DuskTestCase
{
/**
 * A basic browser test example.
 *
 * @return void
 */
public function testLogInFail()
{
    $this->browse(function (Browser $browser) {
        $browser
            ->visit(new LogInPage)
            ->logInUserName()
            ->keys("#password","lol")
            ->click("button.btn-primary"));}
4

1 回答 1

0

同意这很烦人,有两种方法可以解决这个问题

  1. 重新启动浏览器对象上的链接,您可能仍会收到有关logInUserName的警告,但您会获得代码帮助,我同意这在仍在学习时会很有用。
$browser
    ->visit(new LogInPage)
    ->logInUserName();
$browser
    ->keys("#password","lol")
    ->click("button.btn-primary"));
  1. 创建定义自定义函数的帮助文件

或者使用这个要点并在项目的根目录中创建一个文件,您的 IDE 将读取该文件 - https://gist.github.com/slava-vishnyakov/5eb90352fc97702f53a41888e5bae27a

唯一的问题是您可能会收到关于类浏览器存在多个定义的 PHPSTORM 警告...不知道如何解决这个问题

结果是这样的

<?php

namespace Laravel\Dusk {
    class Browser
    {
        /**
         * @return Browser
         */
        public function logInUserName()
        {
        }
    }
}
于 2018-06-22T10:27:55.080 回答