Как исправить ArgumentCountError при использовании объектной модели страницы в behat - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь использовать объектную модель страницы в моем фреймворке behat. Вот мой фрагмент кода.

HomePage.php

use Behat\Behat\Context\Context;
use SensioLabs\Behat\PageObjectExtension\PageObject\Page;

class HomePage extends Page implements Context{
    protected $path = '/';

}

FeatureContext.php

use Behat\Behat\Context\Context;
use SensioLabs\Behat\PageObjectExtension\PageObject\Page;

class FeatureContext extends Page implements Context, \Behat\Behat\Context\SnippetAcceptingContext
{
    private $homepage;

    public function __construct(HomePage $homepage)
    {
        $this->homepage = $homepage;
    }

    /**
     * @Given /^(?:|I )visited (?:|the )(?P<pageName>.*?)$/
     */
    public function iVisitedThe($pageName)
    {
        if (!isset($this->$pageName)) {
            throw new \RuntimeException(sprintf('Unrecognised page: "%s".', $pageName));
        }
        $this->$pageName->open();
    }
}

Но при выполнении тестов behat я получаю следующую ошибку -> "ArgumentCountError: слишком мало аргументов для функции SensioLabs \ Behat \ PageObjectExtension \ PageObject \ Page :: __ construct (), 0 передано и при минимум 2 ожидаемых "

1 Ответ

0 голосов
/ 01 апреля 2019

Настройка должна выглядеть следующим образом:

функция> контексты> объекты страницы

Файл компонента использует определения, определенные в контекстных файлах, а файл контекста реализует фактический шаг, вызывая действияиз разных объектов страницы.

Ваш объект страницы должен расширяться только на страницу.Контекст Feature должен расширять MinkContext и реализовывать Context.Все остальные контексты должны просто реализовывать Context.

Ps: еще раз взгляните на документацию расширения объекта страницы в разделе Работа с объектами страницы.

...