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

如何在Drupal8功能测试中导入配置同步文件?,drupal,phpunit,functional-testing,drupal-8,configuration-management,Drupal,Phpunit,Functional Testing,Drupal 8,Configuration Management,我想知道如何在我正在测试的模块的功能测试中导入配置同步文件。例如,我有一些要测试的自定义内容类型,config/sync中有许多文件属于定义自定义内容类型的节点模块 class ArticleControllerTest extends BrowserTestBase { protected static $modules = ['node', 'dist_source']; } 在测试的顶部,我定义了成功导入的模块,但它不包括配置同步设置,因此没有任何自定义内容类型。如何将这些导入到

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

class ArticleControllerTest extends BrowserTestBase {
    protected static $modules = ['node', 'dist_source'];
}

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

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

$this->configImporter()
帮助将配置从同步导入活动
$this->configImporter()
Drupal\Tests\ConfigTestTrait
中退出。这个特性已经在一些基于测试类中使用,比如
BrowserTestBase

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

创建一个测试配置文件 (还没试过)

如果Drupal站点是通过标准配置文件安装的,您可以尝试将同步配置放入测试配置文件中。模块可能会帮助您创建测试配置文件。配置和概要文件存在相关问题

将依赖于模块的配置放入
config/install
config/optional
(为我工作)

贡献的模块总是将配置放入
config/install
config/optional
中。安装模块后,配置还将写入数据库或活动存储器

在模块中开发配置时,帮助将配置导出到已开发模块的
config/install


如果有人有相同的经验,请期待与我们分享。

我在
setUp()
中的测试基类(
extensed BrowserTestBase
)中这样做:

    // import config from sync
    $config_path =  '/home/rainer/src/asdent/config/sync';
    $config_source = new FileStorage($config_path);
    \Drupal::service('config.installer')->installOptionalConfig($config_source);
效果很好

它就像一个
drush cim sync


并在gitlab CI中为我的端2端自动phpunit测试提供生产配置。

Hi Thomas,你知道了吗?