9

我一直在关注本指南(并通过作曲家安装了所有东西):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);

所以由于某种原因,貂属性是空的,但我不知道为什么。

我的 .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 
{

}

我的 vendor/behat/mink/behat.yml 文件包含:

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

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

4

2 回答 2

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
于 2012-07-16T09:07:16.500 回答
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: ~
于 2015-04-30T06:10:19.887 回答