如何在 Drupal 8 功能测试中导入配置同步文件?

Tho*_*mas 7 phpunit drupal functional-testing configuration-management drupal-8

我想知道如何在我正在测试的模块的功能测试中导入配置同步文件。例如,我想测试一些自定义内容类型,并且 config/sync 中有许多文件与定义自定义内容类型的节点模块有关。

class ArticleControllerTest extends BrowserTestBase {
    protected static $modules = ['node', 'dist_source'];
}
Run Code Online (Sandbox Code Playgroud)

在测试的顶部,我定义了成功导入的模块,但它不包括配置同步设置,因此我的自定义内容类型都不存在。如何将这些导入到我的测试环境中?

Joh*_*ang 6

在开始测试 Drupal 8 时,我也有同样的问题。经过阅读一些文档和教程,我尝试并知道了几种方法:

$this->configImporter()帮助将配置从同步导入到活动状态

$this->configImporter()退出于Drupal\Tests\ConfigTestTrait. 该特征已用于一些基础测试类,例如BrowserTestBase.

然而,该方法对我不起作用。因为,我用的是迅雷安装配置文件。配置文件安装完成后存在默认内容。一旦$this->configImporter()开始导入同步配置,就会遇到某些实体类型无法更新的错误,因为实体已经存在。

创建测试配置文件

(没试过)

如果Drupal站点通过标准配置文件安装,您可以尝试将同步配置放入测试配置文件中。安装配置文件生成器模块可以帮助您创建测试配置文件。配置和配置文件存在相关问题#2788777

将依赖模块的配置放入config/installconfig/optional

(为我工作)

贡献的模块总是将配置放入config/installconfig/optional。安装模块后,配置也将写入数据库或活动存储中。文档 - 在 Drupal 8 模块中包含默认配置

在模块中开发配置时,配置开发有助于将配置导出到config/install开发的模块中。

如果有人有同样的经历,欢迎与我们分享。