FeatureContext

时间:2016-05-12 21:06:51

标签: behat mink

取决于我的FeatureContext类是否扩展RawMinkContextMinkContext我是否遇到运行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"
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果在FeatureContext中扩展MinkContext,则从behat.yml中删除MinkContext。 behat.yml文件应仅包含contexts部分下的本地上下文,在您的情况下,您不需要MinkContext或RawAwareContext,只需要FeatureContext。