behat + mink的问题

时间:2012-08-21 19:11:47

标签: kohana behat mink

我正在尝试安装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/"
    }
}

1 个答案:

答案 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

明确加载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