努力让Mink和Behat一起工作

时间:2012-06-06 16:43:08

标签: behat mink

我一直在关注本指南(并通过作曲家安装了所有内容):http://docs.behat.org/cookbook/behat_and_mink.html我正在尝试让Behat + Mink工作,但每次我尝试运行bin / behat时都会收到以下错误:

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

这行代码是:

return $this->getMink()->getSession($name);

因此,由于某种原因,mink属性为空,但我不知道为什么。

我的.feature文件与指南中的文件完全相同,FeatureContext类也来自指南:

use Behat\Behat\Context\ClosuredContextInterface,
    Behat\Behat\Context\TranslatedContextInterface,
    Behat\Behat\Context\BehatContext,
    Behat\Behat\Exception\PendingException;
use Behat\Gherkin\Node\PyStringNode,
    Behat\Gherkin\Node\TableNode;     

use Behat\MinkExtension\Context\MinkContext;

/**
 * Features context.
 */
class FeatureContext extends MinkContext 
{

}

我的供应商/ behat / mink / behat.yml文件包含:

context:
  extensions:
    Behat\MinkExtension\Extension:
      base_url:  'http://en.wikipedia.org/'
      goutte:    ~
      selenium2: ~

我也试过让我的类扩展BehatContext,然后调用useContext,但这给了我同样的错误。 Behat本身似乎可以工作,只是Mink产生致命错误的任何事情,我不知道如何解决它。

2 个答案:

答案 0 :(得分:8)

这是因为您应该将vendor/behat/behat/behat.yml.dist文件复制到your/project/root/behat.yml,而不是编辑供应商目录中的文件,并将extesions添加到default部分。

这就是它的样子:

default:
  extensions:
    Behat\MinkExtension\Extension:
      base_url: http://lunch-time/app_dev.php
      goutte: ~
      selenium2: ~

  paths:
    features:  features
    bootstrap: features/bootstrap

annotations:
  paths:
    features: features/annotations

closures:
  paths:
    features: features/closures

答案 1 :(得分:0)

我遇到了类似的问题。我们需要告诉Symfony初始化对象。

我在默认>下添加后修复了套房> my_suite。

contexts: [Behat\MinkExtension\Context\MinkContext]

以下是我的新behat.yml的样子。

default:
    suites:
        my_suite:
            type: symfony_bundle
            bundle: AcmeProjectManagerBundle
            contexts: [Behat\MinkExtension\Context\MinkContext]
extensions:
    Behat\Symfony2Extension: ~
    Behat\MinkExtension:
        base_url: http://en.wikipedia.org
        goutte: ~
        selenium2: ~
        sessions:
            default:
                symfony2: ~