Ошибка Behat 3 и Mink Extension в Ubuntu в FeatureContext

В зависимости от того, расширяет ли мой класс FeatureContext RawMinkContext или MinkContext, у меня возникают проблемы с запуском тестов Behat.

Вот мой FeatureContext.php

<?php

use Behat\Behat\Context\ClosuredContextInterface;
use Behat\Behat\Context\TranslatedContextInterface;
use Behat\Behat\Context\Context;
use Behat\Behat\Context\BehatContext;
use Behat\Behat\Exception\PendingException;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;
use Behat\MinkExtension\Context\MinkContext;
use Behat\MinkExtension\Context\RawMinkContext;
use Behat\Behat\Context\SnippetAcceptingContext;

use Behat\Mink\Driver\Selenium2Driver;
use Behat\Behat\Hook\Scope\AfterStepScope;
use Goutte\Client;

class FeatureContext extends MinkContext implements Context, SnippetAcceptingContext {

    /**
     * Initializes context.
     * Every scenario gets its own context object.
     *
     * @since 1.0.0
     *
     * @param array $parameters context parameters (set them up through behat.yml)
     * @return null
     */

    public function __construct() {

    }/* __construct() */

}
?>

и мой behat.yml

default:
    suites:
        default:
            path: %paths.base%/features
            contexts:
                - FeatureContext
                - Behat\MinkExtension\Context\MinkContext
                - Behat\MinkExtension\Context\RawMinkContext
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            base_url: 'http://somesite.com'
            goutte: ~
            javascript_session: selenium2
            files_path: 'vendor'
            selenium2: ~
            sessions:
                default:
                    goutte: ~
                goutte:
                    goutte: ~
                selenium2:
                    selenium2: ~
                symfony2:
                    symfony2: ~
    formatters:
        html:
            output_path: %paths.base%/reports

PHP Fatal error: Call to a member function getSession() on a non-object in /home/behat/composer/vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php on line 101

Если я extend RawMinkContext вместо MinkContext, то тесты запускаются, но добавляются (пустые) версии шагов по умолчанию, которые определены в MinkContext (т.е. если я нахожусь на [url] или когда я иду на [url] и т. д.).

Если я запускаю behat -c ./config/behat.yml (или просто ./behat.yml — у меня одинаковый файл behat.yml в обоих местах, так как я не был уверен, что он используется правильно), я получаю те же результаты, что и выше. Я почти наверняка делаю что-то глупое...

Мой composer.json для справки:

{
"name": "behat mink skeleton",
"require": {
  "behat/behat":  "*",
  "behat/mink-extension": "*",
  "behat/mink-browserkit-driver": "*",
  "behat/mink-goutte-driver": "*",
  "behat/mink-selenium2-driver": "*",
  "bossa/phpspec2-expect": "*",
  "teaandcode/behat-guzzle-extension": "*",
  "sauce/sausage": ">=0.5",
  "sauce/connect": ">=3.0",
  "emuse/behat-html-formatter": "dev-master"
},
"minimum-stability": "dev",
"config": {
        "bin-dir": "bin/",
        "github-oauth": {
            "github.com": "ac1dd3678488663ccc1ba02a5d1d474e1a78bb93"
        }
    }
}

person RichardTape    schedule 12.05.2016    source источник
comment
У вас есть много примеров здесь того, как использовать bahat2, behat3, соответствующие файлы композитора , файлы behat.yml, файлы FeatureContext и так далее. Получение сеанса зависит от того, какой класс вы расширяете. вы можете искать getSession в этом блоге.   -  person BentCoder    schedule 13.05.2016


Ответы (1)


Если вы расширяете MinkContext в FeatureContext, удалите MinkContext из behat.yml. Файл behat.yml должен содержать только локальный контекст в разделе контекстов, в вашем случае вам не нужен MinkContext или RawAwareContext, только FeatureContext.

person lauda    schedule 04.07.2016