funk-spec / symfony-extension
帮助您在测试中使用 symfony 应用程序的服务的扩展
0.1.2
2018-05-29 09:26 UTC
Requires
- php: >=5.4
- docteurklein/funk-spec: ^0.1
- symfony/dependency-injection: ^3.3|^4.0
Requires (Dev)
- symfony/http-kernel: ^3.3|^4.0
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
。