1

behat + minkをインストールしようとしています(symfonyではなくkohanaフレームワークで、behatをmodulesフォルダーに入れています-念のためこれを書いていますが、それが問題の原因ではないと思います)。

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

しかしもちろん、同じエラーが発生します。私は多くの構成を試しました: 拡張部分のみをコピーし、デフォルトをコンテキストに変更し、同じコンテンツを他の 3 つの behat.yml ファイル (vendor/behat/behat、および vendor/behat/monk、および vendor/behat/monk) にコピーします。 -意図) - どれも機能しません。

誰かがこれを設定する正しい方法を教えてもらえますか? 多分ここにいる誰かがそれで問題を抱えていたのかもしれません...

ところで。goutte を使用せずに behat を 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 にある autoload 句は必須ではありません。

モジュールの試行に関しては、KO3.2 にはまだ PSR-0 をロードする機能がないため、モジュールに配置しても正しくロードできません。

behat.yml を無作為にコピーしないでください。プロジェクト ルートに必要なコピーは 1 つだけです。心配な場合は、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

于 2012-09-21T06:15:00.217 に答える