becklyn/test-helpers

常用测试助手

1.3.0 2022-02-17 16:42 UTC

This package is auto-updated.

Last update: 2024-09-17 22:24:35 UTC


README

安装

composer require --dev becklyn/test-helpers 

使用

该捆绑包包含各种基础测试,可以在捆绑包/库中使用。

模式验证测试

此测试接收一个目录列表和测试,以确保 doctrine 注释中没有映射错误。

使用

在您的 tests 目录中扩展它

tests/ValidateEntitySchemaTest:

use Becklyn\TestHelpers\Doctrine\SchemaValidationTest;

class ValidateEntitySchemaTest extends SchemaValidationTest
{
}

有两个扩展点

  • getRootDir(): string 必须返回您的应用程序根的绝对路径。默认情况下,它假定您的测试直接位于测试目录顶级。如果情况不是这样,请更改它。

  • getEntityDirs(): string[] 必须返回存储带有映射信息的文件的绝对路径列表。默认设置为 getRootDir()/src/Entity

未找到翻译测试

此测试检查库中没有使用缺失的翻译。

您需要安装包 becklyn/translations-extractor,最好通过 composer-bin-plugin 完成

composer bin test require becklyn/translations-extractor

翻译将从以下位置提取

  • 实体中的验证约束注释(在类本身及其属性上)
  • AbstractType 中的表单字段选项
  • BackendTranslator 的使用(Mayd-specific)
  • @Callback 方法中使用 ExecutionContext(Interface)
  • Symfony: 控制器中的 $this->get('translator')->trans('foobar')
  • Symfony: 控制器中的 $this->get('translator')->transChoice('foobar')
  • Symfony: 控制器中的 $this->addFlash()$this->getFlashBag()->add()
  • Symfony: 表单类型选择
  • 自定义验证约束消息属性的默认消息
  • 特殊类的特定构造函数参数

使用

在您的 tests 目录中扩展它

tests/ValidateEntitySchemaTest:

use Becklyn\PhpCs\Testing\NoMissingTranslationsTest;

class ValidateTranslationsTest extends NoMissingTranslationsTest
{
}

有几个扩展点

  • getLocales(): string[] 返回要验证的语言列表。默认设置为 ["de", "en"]
  • getDirectoriesWithUsages(): string[] 返回使用翻译的代码的绝对路径(如表单、实体、模板等)。默认设置为 ["getRootDir()/src"]
  • getDirectoriesWithTranslations(): string[]: 返回存储翻译的绝对路径。期望翻译文件为 yaml 格式。默认设置为 ["getRootDir()/src/Resources/translations"]
  • getIgnoredKeys[]: (complex): 返回在验证缺失键时应忽略的键的列表。有关详细信息,请参阅以下内容。默认设置为 []
  • getRootDir(): string[]: 必须返回您的应用程序根的绝对路径。默认情况下,它假定您的测试直接位于测试目录顶级。如果情况不是这样,请更改它。
  • getMockedFunctions(): string[]: 该项目/库定义的 twig 函数的名称。它们需要模拟,否则 Twig 将引发异常。
  • getMockedFilters(): string[]: 该项目/库定义的 twig 过滤器的名称。它们需要模拟,否则 Twig 将引发异常。
  • getMockedTests(): string[]: 该项目/库定义的 twig 测试的名称。它们需要模拟,否则 Twig 将引发异常。
定义忽略的键

忽略的键是一个索引数组,其中

  • 是一个有效的正则表达式模式。*确保使其尽可能具体(例如,使用 ^$)。
  • 是应用此忽略的域列表(string[])。您可以选择传递 true 以在所有域中忽略它。
return [
    "~^example\\..*$~" => ["form", "validators"], // ignore example.* in "form" and "validators" domain only 
                                                  // (i.e. will still be reported for "messages" for example)
                                                  
    "~^second\\..*$~" => true,                    // ignore second.* in every domain
];