pavlakis/slim-behat-extension

Slim 3 Behat 扩展

1.0.2 2017-10-08 19:38 UTC

This package is auto-updated.

Last update: 2024-09-15 01:36:16 UTC


README

本扩展是基于Behat Laravel 扩展编写的

可以通过 Packagist 使用 composer 安装

 composer require --dev pavlakis/slim-behat-extension

在你的 behat.yml 文件中,在 extensions 部分添加扩展

    Pavlakis\Slim\Behat: ~

以上是最小配置,只要你使用 Akrabat 的 Slim 3 骨架,并且 settings.phpapp/settings.phpbehat.ymltests/behat 内的默认位置。

这是默认配置预期的目录结构

- my_app_dir
|___ app
    |_______ settings.php
    |_______ dependencies.php
|___ tests
    |_________ behat
    	       |_____ behat.yml


如果 behat.yml 在根目录,使用以下配置

default:
  suites:
    default:
      contexts:
        - FeatureContext

  extensions:
    Pavlakis\Slim\Behat:
      config_file: app/settings.php
      dependencies_file: app/dependencies.php
      

除了配置(settings.php)外,所有其他参数都是可选的,但你也可以传递

      config_file: ../../app/configs/settings_test.php
      dependencies_file: ../../app/dependencies.php
      middleware_file: ../../middleware.php
      routes_file: ../../routes.php

在你的 FeatureContext 文件中

  • 包含 KernelAwareContext 接口
  • 包含 Pavlakis\Slim\Behat\Context\App 特性
  • 使用 $this->app 访问 Slim 3 应用

特征上下文示例

使用 logger 将文本记录下来,以确保扩展工作正常。

FeatureContext.php

<?php

use Behat\Behat\Tester\Exception\PendingException;
use Behat\Behat\Context\Context;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;

use Pavlakis\Slim\Behat\Context\App;
use Pavlakis\Slim\Behat\Context\KernelAwareContext;

class FeatureContext implements Context, KernelAwareContext
{
   use App;

    /**
     * @Then it works
     */

    public function itWorks()
   {
       /** @var \Psr\Log\LoggerInterface $logger */
       $logger = $this->app->getContainer()->get('logger');
       $logger->info("Slim-behat integration works!");
   }

    /**
     * @Given I load the slim-behat extension
     */
    public function iLoadTheSlimBehatExtension()
    {
    }
}

test.feature

Feature: The extension works
  In order to see this extension works
  As a developer
  I need to be see something happening 

  Scenario: The extension works
    Given I load the slim-behat extension
    Then it works

使用 Mink 的特征上下文示例

use Behat\Behat\Context\Context;

use Behat\MinkExtension\Context\MinkContext;
use Pavlakis\Slim\Behat\Context\App;
use Pavlakis\Slim\Behat\Context\KernelAwareContext;

/**
 * Defines application features from the specific context.
 */
class FeatureContext extends MinkContext implements Context, KernelAwareContext
{
    use App;
}

访问你的依赖项

$this->app->getContainer()