Как работать с объектами страницы в laravel-dusk

Я новичок в 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"));}

1

Решение

Согласитесь, это раздражает, есть 2 способа обойти это

  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 о наличии нескольких определений для класса Browser … не знаю, как обойти это

В результате что-то вроде этого

<?php

namespace Laravel\Dusk {
class Browser
{
/**
* @return Browser
*/
public function logInUserName()
{
}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]