function KernelTestBase::register
Same name in other branches
- 9 core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::register()
- 8.9.x core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::register()
- 10 core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::register()
Registers test-specific services.
Extend this method in your test to register additional services. This method is called whenever the kernel is rebuilt.
Parameters
\Drupal\Core\DependencyInjection\ContainerBuilder $container: The service container to enhance.
Overrides ServiceProviderInterface::register
See also
\Drupal\Tests\KernelTestBase::bootKernel()
27 calls to KernelTestBase::register()
- AdminAccountSwitcherTest::register in core/
tests/ Drupal/ KernelTests/ Core/ DefaultContent/ AdminAccountSwitcherTest.php - Registers test-specific services.
- CacheCollectorTest::register in core/
tests/ Drupal/ KernelTests/ Core/ Cache/ CacheCollectorTest.php - Registers test-specific services.
- ConfigImporterMissingContentTest::register in core/
tests/ Drupal/ KernelTests/ Core/ Config/ ConfigImporterMissingContentTest.php - Registers test-specific services.
- CronQueueTest::register in core/
modules/ system/ tests/ src/ Kernel/ System/ CronQueueTest.php - Registers test-specific services.
- DatabaseBackendTagTest::register in core/
tests/ Drupal/ KernelTests/ Core/ Cache/ DatabaseBackendTagTest.php - Registers test-specific services.
27 methods override KernelTestBase::register()
- AdminAccountSwitcherTest::register in core/
tests/ Drupal/ KernelTests/ Core/ DefaultContent/ AdminAccountSwitcherTest.php - Registers test-specific services.
- CacheCollectorTest::register in core/
tests/ Drupal/ KernelTests/ Core/ Cache/ CacheCollectorTest.php - Registers test-specific services.
- ConfigImporterMissingContentTest::register in core/
tests/ Drupal/ KernelTests/ Core/ Config/ ConfigImporterMissingContentTest.php - Registers test-specific services.
- CronQueueTest::register in core/
modules/ system/ tests/ src/ Kernel/ System/ CronQueueTest.php - Registers test-specific services.
- DatabaseBackendTagTest::register in core/
tests/ Drupal/ KernelTests/ Core/ Cache/ DatabaseBackendTagTest.php - Registers test-specific services.
File
-
core/
tests/ Drupal/ KernelTests/ KernelTestBase.php, line 542
Class
- KernelTestBase
- Base class for functional integration tests.
Namespace
Drupal\KernelTestsCode
public function register(ContainerBuilder $container) {
// Keep the container object around for tests.
$this->container = $container;
$container->register('datetime.time', 'Drupal\\Component\\Datetime\\Time');
$container->register('flood', 'Drupal\\Core\\Flood\\MemoryBackend')
->addArgument(new Reference('request_stack'));
$container->register('lock', 'Drupal\\Core\\Lock\\NullLockBackend');
$container->register('cache_factory', 'Drupal\\Core\\Cache\\MemoryBackendFactory')
->addArgument(new Reference('datetime.time'));
// Disable the super user access policy so that we are sure our tests check
// for the right permissions.
if (!isset($this->usesSuperUserAccessPolicy)) {
$test_file_name = (new \ReflectionClass($this))->getFileName();
// @todo Decide in https://www.drupal.org/project/drupal/issues/3437926
// how to remove this fallback behavior.
$this->usesSuperUserAccessPolicy = !str_starts_with($test_file_name, $this->root . DIRECTORY_SEPARATOR . 'core');
}
$container->setParameter('security.enable_super_user', $this->usesSuperUserAccessPolicy);
// Use memory for key value storages to avoid database queries. Store the
// key value factory on the test object so that key value storages persist
// container rebuilds, otherwise all state data would vanish.
if (!isset($this->keyValue)) {
$this->keyValue = new KeyValueMemoryFactory();
}
$container->set('keyvalue', $this->keyValue);
// Set the default language on the minimal container.
$container->setParameter('language.default_values', Language::$defaultValues);
if ($this->strictConfigSchema) {
$test_file_name = (new \ReflectionClass($this))->getFileName();
// @todo Decide in https://www.drupal.org/project/drupal/issues/3395099 when/how to trigger deprecation errors or even failures for contrib modules.
$is_core_test = str_starts_with($test_file_name, $this->root . DIRECTORY_SEPARATOR . 'core');
$container->register('testing.config_schema_checker', ConfigSchemaChecker::class)
->addArgument(new Reference('config.typed'))
->addArgument($this->getConfigSchemaExclusions())
->addArgument($is_core_test)
->addTag('event_subscriber');
}
// Relax the password hashing cost in tests to avoid performance issues.
if ($container->hasDefinition('password')) {
$container->getDefinition('password')
->setArguments([
PASSWORD_BCRYPT,
[
'cost' => 4,
],
]);
}
// Add the on demand rebuild route provider service.
$route_provider_service_name = 'router.route_provider';
// While $container->get() does a recursive resolve, getDefinition() does
// not, so do it ourselves.
$id = $route_provider_service_name;
while ($container->hasAlias($id)) {
$id = (string) $container->getAlias($id);
}
$definition = $container->getDefinition($id);
$definition->clearTag('needs_destruction');
$container->setDefinition("test.{$route_provider_service_name}", $definition);
$route_provider_definition = new Definition(RouteProvider::class);
$route_provider_definition->setPublic(TRUE);
$container->setDefinition($id, $route_provider_definition);
// Remove the stored configuration importer so if used again it will be
// built with up-to-date services.
$this->configImporter = NULL;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.