我一直在关注本指南(并通过作曲家安装了所有内容):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产生致命错误的任何事情,我不知道如何解决它。
答案 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: ~