0

私は最近 Behat で少し遊んでいます。問題は、Behat で PHPspec を使用してすべてのものを「アサート」できるかどうかわからないということです。これは非常に読みやすいので、使用したいと思います。私の場合、Symfony を使用しています。

そうでない場合、Behat で PHPunit のアサートを使用するにはどうすればよいですか。今のところできませんでした。PHPUnit を composer でインストールしましたが、Behat ドキュメントではファイルが必要ですが、シナリオは少し異なります (composer を使用してインストールしたのではなく、Vendor ディレクトリにありません)。

DOC からの URL: http://docs.behat.org/quick_intro.html#more-about-features

、require_once は少しエレガントです。

アイデアはありますか?, 答えはありますか?, ありがとう!

4

3 に答える 3

3

expect helperを使用して、phpspec のマッチャーを動作させることができます。

いくつかの使用例:

// matches if $something === 'something'
expect($something)->toBe('something');

// matches if $article->isActive() returns true
expect($article)->toBeActive(); 

// matches if $article->hasComments() returns false
expect($article)->notToHaveComments();
于 2014-07-01T05:58:19.053 に答える
1

PHPUnit で Bahat を使用できることは間違いありません。PHPSpec は試していませんが、アサーションを実行するロジックにアクセスできれば可能だと確信しています。通常、どのテスト フレームワークもそのロジックを「外部ユーザー」に公開します。

/**
 * @Then /^the magic should happen$/
 */
public function assertUnicornsExist()
{
    // Make standard assertions through static calls…
    PHPUnit_Framework_TestCase::assertTrue(true);
}

インストールに関して全体像を把握できるかどうかはわかりませんが、コンポーザーを使用している場合は、ソースとコンテキストを含めるように「自動ロード」部分を構成するだけです (それらが別々の場合)。私は箱から出してほとんど動作します:

{
    "require": {
        "behat/behat": "dev-master",
        "behat/mink": "dev-master",
        "behat/mink-extension": "dev-master",
        "behat/mink-browserkit-driver": "dev-master",
        "behat/mink-goutte-driver": "dev-master",
        "phpunit/dbunit": "*"
    },
    "autoload": {
        "psr-0": {
            "": "src/"
        }
    }
}

次に、を含めるだけですvendor/autoload.php@BeforeSuiteフックを使用して一度実行されるブートストラップを追加することをお勧めします。

/**
 * @BeforeSuite
 */
 public static function setUpSuite(BeforeSuiteScope $scope)
 {
     // if not bootstrapped already, then include bootstrap with init'ing the autoloader, etc…
 }

また、Behat 3 から始める場合 (ドキュメントがまだない場合) は、http://behat.readthedocs.org/en/latest/を使用してください。それらには、最新の必需品といくつかの適切な例が含まれています。

于 2014-06-19T21:20:12.490 に答える