我正在尝试安装behat + mink(在kohana框架上,而不是symfony,我将behat放入模块文件夹中 - 我正在写这个以防万一,但我猜这不是导致我问题的原因)。
我拥有与behat文档相同的search.feature文件,我正在将功能/引导类更改为:
<?php
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
{
}
当我在CLI中键入“behat”时,我收到以下错误:在第80行的...... RawMinkContext.php中的非对象上调用成员函数getSession()。
我在某处读到了导致此错误的behat.yml文件。我认为正确的做法是在已安装的behat文件夹的根目录中创建新的behat.yml文件并将此代码放入其中:
default:
extensions:
Behat\MinkExtension\Extension:
base_url: http://wikipedia.org
goutte: ~
selenium2: ~
paths:
features: features
bootstrap: features/bootstrap
annotations:
paths:
features: features/annotations
closures:
paths:
features: features/closures
但是,它给了我同样的错误。我尝试了很多配置:只复制扩展部分,将默认值更改为上下文,将相同的内容复制到另外三个behat.yml文件(vendor / behat / behat,vendor / behat / monk,vendor / behat / monk) -ententions) - 没有用。
有人可以告诉我这是什么设置方法吗?也许这里有人也有问题...
顺便说一句。当我安装behat goutte,只有selenium2驱动程序,我收到错误,没有安装goutte。但当我用goutte安装它时,我得到的错误是没有fabpot / goutte目录(或fapbot /,我不记得了,但我想这是第一个:D),所以我删除了所有内容并重新安装了behat with以下composer.json文件,也许这也与此错误有关:
{
"name": "behat/mink-browserkit-driver",
"description": "Symfony2 BrowserKit driver for Mink framework",
"keywords": ["Symfony2", "testing", "browser"],
"homepage": "http://mink.behat.org/",
"type": "mink-driver",
"license": "MIT",
"authors": [
{
"name": "Konstantin Kudryashov",
"email": "ever.zet@gmail.com",
"homepage": "http://everzet.com"
}
],
"require": {
"php": ">=5.3.1",
"symfony/browser-kit": ">=2.0.0,<2.2.0",
"symfony/dom-crawler": ">=2.0.0,<2.2.0",
"behat/behat": "2.4.*@stable",
"behat/mink": "1.4.*@stable",
"behat/mink-extension": "*",
"behat/mink-goutte-driver": "*",
"behat/mink-selenium2-driver": "*"
},
"minimum-stability": "dev",
"autoload": {
"psr-0": {
"Behat\\Mink\\Driver": "src/"
}
},
"config": {
"bin-dir": "bin/"
}
}
答案 0 :(得分:4)
为任何事情安装Behat + Mink的推荐方法,不仅仅是Kohana,都是通过Composer安装的。有关说明,请参阅http://docs.behat.org/quick_intro.html。您的composer.json中的autoload子句不是必需的。
至于您的模块尝试,KO3.2还无法加载PSR-0,因此将其放入模块中将无法正确加载。
不要随意复制behat.yml - 您只需要在项目根目录中复制一份。如果您担心,可以通过bin/behat -c /path/to/behat.yml
正确设置composer.json以获得水貂依赖项,然后您可以bin/behat -dl
验证水貂的工作原理。
然后,您可以bin/behat --init
创建功能文件结构。
这将创建一个覆盖Mink定义的FeatureContext,因此添加
require_once __DIR__.'/../../vendor/autoload.php';
并将类定义更改为:
class FeatureContext extends Behat\MinkExtension\Context\MinkContext
在您的features / bootstrap / FeatureContext.php文件中。
现在一切都应该按预期工作了。我最近做了一个Behat + Mink + KO3设置,随时可以看到我在这里做了什么:https://github.com/Moult/Eadrax/commit/b5dd813c92b82aea29eea13b5a30bae170aa57e6