suhm/laravel-bdd-helpers

此包最新版本(dev-master)没有可用的许可证信息。

dev-master 2014-07-07 19:22 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:43:59 UTC


README

帮助你在 Laravel 环境下进行 BDD 的工具。

这仍然处于 WIP 阶段,但您可以在项目中自由使用它!

内容

  1. 安装
  2. Laravel Behat 上下文
  3. 环境 Behat 上下文
  4. HTTP 客户端 Behat 上下文
  5. 真实示例

安装

通过 Composer 安装它

"suhm/laravel-bdd-helpers": "dev-master"

Laravel Behat 上下文

Laravel Behat 上下文特质使得 Laravel Application 实例可以在您的 Behat 功能中使用。

使用方式如下

<?php

use Behat\Behat\Context\SnippetAcceptingContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;

/**
 * Behat context class.
 */
class FeatureContext implements SnippetAcceptingContext
{
    use LaravelBdd\Behat\Laravel;

    /**
     * Initializes context.
     *
     * Every scenario gets its own context object.
     * You can also pass arbitrary arguments to the context constructor through behat.yml.
     */
    public function __construct()
    {
        $this->prepareApplication(__DIR__.'/../../bootstrap/start.php');
    }
}

现在您可以使用 Application 实例,就像使用 Laravel 的默认 TestCase 一样。

环境 Behat 上下文

默认情况下,Laravel 上下文会将环境设置为 testing。如果您需要设置其他环境,或者您没有使用 Laravel 上下文特质,但仍需要加载测试配置文件。

Environment 特质包含一个名为 setEnvironment() 的方法。第一个参数是环境名称,默认为 testing。第二个参数是要导出的环境变量名称,默认为 APP_ENV

您可以设置应用程序的环境名称,并可选地导出它

<?php

use Behat\Behat\Context\SnippetAcceptingContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;

/**
 * Behat context class.
 */
class FeatureContext implements SnippetAcceptingContext
{
    use LaravelBdd\Behat\Environment;
    use LaravelBdd\Behat\Laravel;

    /**
     * Initializes context.
     *
     * Every scenario gets its own context object.
     * You can also pass arbitrary arguments to the context constructor through behat.yml.
     */
    public function __construct()
    {
        $this->setEnvironment(); // Default env is 'testing', export 'APP_ENV=testing'
        $this->setEnvironment('acceptance'); // Set env to 'acceptance' and export 'APP_ENV=acceptance'
        $this->setEnvironment('testing', 'SOMETING'); // Set env to testing and export 'SOMETHING=testing'
        $this->prepareApplication(__DIR__.'/../../bootstrap/start.php');
    }
}

HTTP 客户端 Behat 上下文

如果您需要访问路由和控制器的操作,可以使用此特质获取 Laravel HTTP 客户端的实例。

然后您可以进行如下操作

<?php

use Behat\Behat\Context\SnippetAcceptingContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;

/**
 * Behat context class.
 */
class FeatureContext implements SnippetAcceptingContext
{
    use LaravelBdd\Behat\Laravel;
    use LaravelBdd\Behat\HttpClient;

    /**
     * Initializes context.
     *
     * Every scenario gets its own context object.
     * You can also pass arbitrary arguments to the context constructor through behat.yml.
     */
    public function __construct()
    {
        $this->prepareApplication(__DIR__.'/../../bootstrap/start.php');
        $this->createClient();
    }

    /**
     * @When I visit :uri
     */
    public function iVisit($uri)
    {
        $this->client->request('GET', $uri);
    }

真实示例

有关在 Laravel 环境下进行 BDD 的真实示例,请参阅此存储库:https://github.com/petersuhm/laravel-bdd