1

我正在尝试安装 behat + mink(在 kohana 框架上,而不是 symfony 上,我将 behat 放入模块文件夹中 - 我写这个以防万一,但我想这不是导致我的问题的原因)。

我拥有与 behat 文档中相同的 search.feature 文件,我将 features/bootstrap 类更改为:

<?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 -意图) - 没有工作。

有人能告诉我设置这个的正确方法是什么吗?也许这里的某人也有这个问题......

顺便提一句。当我安装 behat withough goutte 时,仅使用 selenium2 驱动程序,我收到未安装 goutte 的错误。但是当我用 goutte 安装它时,我收到了没有 fabpot/goutte 目录(或 fapbot/,我不记得了,但我想这是第一个 :D)的错误,所以我删除了所有内容并重新安装了 behat下面的 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/"
    }
}
4

1 回答 1

4

为任何东西(不仅仅是 Kohana)安装 Behat+Mink 的推荐方法是通过 Composer。有关说明,请参阅http://docs.behat.org/quick_intro.html。您在 composer.json 中的自动加载子句不是必需的。

至于您的模块尝试,KO3.2 还没有加载 PSR-0 的能力,因此将其放入模块中将无法正确加载它。

不要随意复制您的 behat.yml - 您只需要在项目根目录中复制一份。如果您担心,可以通过显式加载 behat.ymlbin/behat -c /path/to/behat.yml

正确设置 composer.json 以具有 mink 依赖项,然后您可以bin/behat -dl验证 mink 是否有效。

然后,您可以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

于 2012-09-21T06:15:00.217 回答