contao / test-case
Contao 测试用例
Requires
- php: ^8.1
- phpunit/phpunit: ^9.5
- symfony/yaml: ^6.4 || ^7.0
Requires (Dev)
- ext-pdo: *
- contao/core-bundle: 5.4.3
- doctrine/dbal: ^3.6
- doctrine/orm: ^2.17
- symfony/http-client: ^6.4 || ^7.0
- 5.x-dev
- 5.4.x-dev
- 5.4.3
- 5.4.2
- 5.4.1
- 5.4.0
- 5.4.0-RC4
- 5.4.0-RC3
- 5.4.0-RC2
- 5.4.0-RC1
- 5.3.x-dev
- 5.3.15
- 5.3.14
- 5.3.13
- 5.3.12
- 5.3.11
- 5.3.10
- 5.3.9
- 5.3.8
- 5.3.7
- 5.3.6
- 5.3.5
- 5.3.4
- 5.3.3
- 5.3.2
- 5.3.1
- 5.3.0
- 5.3.0-RC4
- 5.3.0-RC3
- 5.3.0-RC2
- 5.3.0-RC1
- 5.2.x-dev
- 5.2.10
- 5.2.9
- 5.2.8
- 5.2.7
- 5.2.6
- 5.2.5
- 5.2.4
- 5.2.3
- 5.2.2
- 5.2.1
- 5.2.0
- 5.2.0-RC6
- 5.2.0-RC5
- 5.2.0-RC4
- 5.2.0-RC3
- 5.2.0-RC2
- 5.2.0-RC1
- 5.1.x-dev
- 5.1.11
- 5.1.10
- 5.1.9
- 5.1.8
- 5.1.7
- 5.1.6
- 5.1.5
- 5.1.4
- 5.1.3
- 5.1.2
- 5.1.1
- 5.1.0
- 5.1.0-RC3
- 5.1.0-RC2
- 5.1.0-RC1
- 5.0.x-dev
- 5.0.10
- 5.0.9
- 5.0.8
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 5.0.0-RC4
- 5.0.0-RC3
- 5.0.0-RC2
- 5.0.0-RC1
- 4.13.x-dev
- 4.13.49
- 4.13.48
- 4.13.47
- 4.13.46
- 4.13.45
- 4.13.44
- 4.13.43
- 4.13.42
- 4.13.41
- 4.13.40
- 4.13.39
- 4.13.38
- 4.13.37
- 4.13.36
- 4.13.35
- 4.13.34
- 4.13.33
- 4.13.32
- 4.13.31
- 4.13.30
- 4.13.29
- 4.13.28
- 4.13.27
- 4.13.26
- 4.13.25
- 4.13.24
- 4.13.23
- 4.13.22
- 4.13.21
- 4.13.20
- 4.13.19
- 4.13.18
- 4.13.17
- 4.13.16
- 4.13.15
- 4.13.14
- 4.13.13
- 4.13.12
- 4.13.11
- 4.13.10
- 4.13.9
- 4.13.8
- 4.13.7
- 4.13.6
- 4.13.5
- 4.13.4
- 4.13.3
- 4.13.2
- 4.9.x-dev
- 4.9.42
- 4.9.41
- 4.9.40
- 4.9.39
- 4.9.38
- 4.9.37
- 4.9.36
- 4.9.35
- 4.9.34
- 4.9.33
- 4.9.32
- 4.9.31
- 4.9.30
- 4.9.29
- 4.9.28
- 4.6.1
- 4.6.0
- 4.5.0
- 4.4.0
- 4.3.1
- 4.3.0
- 4.2.3
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.0
- 3.1.0
- 3.0.0
- 2.1.0
- 2.0.0
- 1.6.0
- 1.5.0
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
This package is auto-updated.
Last update: 2024-09-17 06:23:04 UTC
README
Contao 是一个开源的 PHP 内容管理系统,适用于希望拥有易于维护的专业网站的人。访问 项目网站 获取更多信息。
Contao 测试用例提供了带有一些有用方法的 PHPUnit 测试用例,用于测试 Contao。运行 php composer.phar require --dev contao/test-case
安装包,然后在测试类中使用它
use Contao\TestCase\ContaoTestCase; class MyTest extends ContaoTestCase { }
模拟 Symfony 容器
getContainerWithContaoConfiguration()
方法模拟了一个具有 Contao 核心扩展默认配置的 Symfony 容器。
$container = $this->getContainerWithContaoConfiguration(); echo $container->getParameter('contao.upload_path'); // will output "files"
您还可以设置项目目录
$container = $this->getContainerWithContaoConfiguration('/tmp'); echo $container->getParameter('kernel.project_dir'); // will output "/tmp" echo $container->getParameter('kernel.root_dir'); // will output "/tmp/app" echo $container->getParameter('kernel.cache_dir'); // will output "/tmp/var/cache"
模拟 Contao 框架
mockContaoFramework)
方法模拟了一个初始化的 Contao 框架。
$framework = $this->mockContaoFramework(); $framework ->expect($this->atLeastOnce()) ->method('initialize') ;
该方法自动添加一个带有 Contao 设置的 Config 适配器
$framework = $this->mockContaoFramework(); $config = $framework->getAdapter(Contao\Config::class); echo $config->get('datimFormat'); // will output "'Y-m-d H:i'"
您可以选择添加更多适配器作为参数
$adapters = [ Contao\Config::class => $configAdapter, Contao\Encryption::class => $encryptionAdapter, ]; $framework = $this->mockContaoFramework($adapters);
给定的 Config 适配器将覆盖默认的 Config 适配器。
模拟适配器
mockAdapter()
方法将模拟具有给定方法的适配器。
$adapter = $this->mockAdapter(['findById']); $adapter ->method('findById') ->willReturn($model) ; $framework = $this->mockContaoFramework([Contao\FilesModel::class => $adapter]);
具有简单返回值的适配器,如上述内容,可以进一步简化
$adapter = $this->mockConfiguredAdapter(['findById' => $model]);
此代码与上述代码完全相同。
模拟具有魔法属性的类
mockClassWithProperties()
方法模拟了一个使用魔法 __set()
和 __get()
方法来管理属性的类。
$mock = $this->mockClassWithProperties(Contao\PageModel::class); $mock->id = 2; $mock->title = 'Home'; echo $mock->title; // will output "Home"
如果要模拟的类是只读的,您可以可选地以构造函数参数的形式传递属性
$properties = [ 'id' => 2, 'title' => 'Home', ]; $mock = $this->mockClassWithProperties(Contao\PageModel::class, $properties); echo $mock->title; // will output "Home"
如果您需要调用原始类的某个方法,您可以传递方法名称作为第三个参数。生成的模拟对象将是一个没有给定方法的部分模拟对象。
$mock = $this->mockClassWithProperties(Contao\PageModel::class, [], ['getTable']); $mock->id = 2; echo $mock->getTable(); // will call the original method
模拟令牌存储
mockTokenStorage()
模拟了一个返回 Contao 后端或前端用户的令牌存储。
$tokenStorage = $this->mockTokenStorage(Contao\BackendUser::class); $user = $tokenStorage->getToken()->getUser();
使用临时目录
getTempDir()
方法根据测试类名称创建一个临时目录并返回其路径。
$fs = new Filesystem(); $fs->mkdir($this->getTempDir().'/var/cache');
测试运行完成后,该目录将自动删除。为此,请确保您在测试类中定义了方法时始终调用父 tearDownAfterClass()
方法!
use Contao\TestCase\ContaoTestCase; class MyTest extends ContaoTestCase { public static function tearDownAfterClass() { // The temporary directory would not be removed without this call! parent::tearDownAfterClass(); } }