lisincin / modera-foundation-testing-tools
Requires
- doctrine/doctrine-bundle: ^1.2|^2.0
- doctrine/orm: ^2.2
- modera/foundation-bundle: ^1.0|^2.0|^3.0|^4.0
Requires (Dev)
- phpunit/phpunit: ^4.0
This package is auto-updated.
Last update: 2024-09-13 20:10:54 UTC
README
向 Modera\FoundationBundle 添加一些测试工具。
安装
将此依赖项添加到您的 composer.json 文件中
"modera/foundation-bundle": "dev-master",
"lisincin/modera-foundation-testing-tools": "~1.0"
更新您的 AppKernel 类并在此处添加 ModeraFoundationBundle 声明
new Modera\FoundationBundle\ModeraFoundationBundle(),
文档
功能测试
Modera\FoundationBundle\FunctionalTestCase 允许您通过以下方式提高测试编写速度:
- kernel 启动(这实际上是通过重写和运行 static::createClient() 实现的)
- 实体管理器创建
- 数据库创建/删除/清除
预定义变量
- $keepDatabase。如果为 true,则测试将重用现有表(如果存在)。提高开发期间测试重运行速度。
- $useTransaction。如果为 true,则所有数据库活动都将包裹在事务中。数据库清除速度提高。适用于 CI 和单次运行。
- $client。预定义客户端。
- $container。当前启动的 kernel 的容器。
- $em。当前 kernel 的实体管理器。
- $st。当前 kernel 的模式工具。
请勿重启(创建新)kernel。这可能导致意外的实体管理器行为。
测试用例初始化
此测试用例引入了新的测试用例初始化。所有准备工作(客户端创建、实体管理器初始化、数据库准备、事务启动)都在 init 方法中完成。如果需要在之前执行某些操作,请使用 preInit 方法。如果需要访问某些服务或其他 symfony 内部组件,在 symfony 初始化覆盖之后初始化一些组件,请使用 postInit 方法。
测试流程常规
隔离
有两种隔离级别:方法和类。通过重写 getIsolationLevel() 来修改。
-
类隔离级别。这意味着数据库将只创建/清除一次,kernel 也将只启动一次。在所有测试之前。每次下一个测试都将基于上一个测试的结果运行。如果想要重用用户身份验证,例如,则可使用。
-
方法隔离级别。在每次测试之前都将清除数据库并启动 kernel。
表创建
大多数功能测试最终都会使用数据库。FunctionalTestCase 允许您简化此过程。
重写 getDatabaseTableList 方法。此方法应返回使用中的实体 ClassMetadata 的数组。
表重用
要保留和重用数据库表,请重写
static $keepDatabase = true;
使用事务代替表清除
static $useTransaction = true;
多对多实体清除
在多对多连接的情况下,简单地逐个删除表可能导致外键错误。为了避免这种情况,请使用 preClear 方法解决(删除)这些实体。
简单的测试用例示例
class SimpleTestCase extends FunctionalTestCase
{
/**
* @var SimpleService
*/
static private $simpleService
static public function postInit()
{
static::$simpleService = static::$container->get('simple.service');
}
static protected function getDatabaseTableList()
{
return [
static::$em->getClassMetadata('\Acme\AppBundle\Entity\SimpleEntity');
]
}
function testSimpleTestCase()
{
// do some test stuff here
}
}
基本的 phpunit 方法覆盖
方法覆盖列表。
- setUpBeforeClass。通过重写 doSetUpBeforeClass 模板方法来使用 setUpBeforeClass。
- tearDownAfterClass。重写 doTearDownAfterClass
- setUp。重写 doSetUp
- tearDown。重写 doTearDown
许可
此捆绑包受 MIT 许可证的保护。有关完整的许可证信息,请参阅捆绑包中的 Resources/meta/LICENSE。