Я новичок в php и dusk, но я пытаюсь работать с объектом страницы в сумерках, и я застрял, потому что, когда я пытаюсь добавить объект страницы для тестирования, phpstorm сказал мне, что «Метод logInUserName не найден в $ this ». Может кто-нибудь объяснить мне, где я не прав?
У меня есть класс страницы:
<?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"));}
Согласитесь, это раздражает, есть 2 способа обойти это
$browser
->visit(new LogInPage)
->logInUserName();
$browser
->keys("#password","lol")
->click("button.btn-primary"));
Или используйте эту суть и создайте файл в корне вашего проекта, который будет читать ваша IDE — https://gist.github.com/slava-vishnyakov/5eb90352fc97702f53a41888e5bae27a
Единственная проблема в том, что вы можете получить предупреждение PHPSTORM о наличии нескольких определений для класса Browser … не знаю, как обойти это
В результате что-то вроде этого
<?php
namespace Laravel\Dusk {
class Browser
{
/**
* @return Browser
*/
public function logInUserName()
{
}
}
}
Других решений пока нет …