funk-spec/symfony-extension

帮助您在测试中使用 symfony 应用程序的服务的扩展

安装次数: 22,642

依赖者: 0

建议者: 0

安全性: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:testwork-extension

0.1.2 2018-05-29 09:26 UTC

This package is not auto-updated.

Last update: 2024-09-14 20:04:02 UTC


README

 composer require --dev funk-spec/symfony-extension

是什么?

一个与funk-spec集成的扩展,将您的 symfony 应用程序与规格相结合。

它将

  • 解析使用 ContainerInterface 类型提示的构造函数参数
  • 将每个示例用 doctrine 事务包装,并在之后回滚

为什么?

behat's one存在的原因相同。
两者都依赖于 TestWork 框架。
遗憾的是,两者之间存在大量的重复,但还没有真正尝试抽象出一些差异。

如何?

在您的 funk.yml 中

default:
    autoload:
        tests: '%paths.base%'

    suites:
        default: ~

    extensions:
        FunkSpec\Extension\Symfony\Extension:
            kernel:
                class: App\Symfony\Kernel # or AppKernel (must be autoloadable)
                env: test

现在您的规格类可以注入容器

<?php

namespace tests\Doctrine\Repository;

use Symfony\Component\DependencyInjection\ContainerInterface;

final class Products implements \Funk\Spec
{
    public function __construct(ContainerInterface $container)
    {
        $this->products = $container->get('products'); // this is a repository
    }

    function it_works()
    {
        $this->products->find('77c4bb2e-2c18-4164-a899-7f969dec5c9d')->getId();
    }
}

自动事务包装和回滚

每个示例都在事务中运行,并在每次执行后回滚,除非您明确禁用它

default:
    extensions:
        FunkSpec\Extension\Symfony\Extension:
            doctrine:
                rollback: false

这取决于应用程序 Kernel 中存在 doctrine 服务,例如 ManagerRegistry