TestServiceProvider.php
Namespace
Drupal\KernelTestsFile
- 
              core/tests/ Drupal/ KernelTests/ TestServiceProvider.php 
View source
<?php
namespace Drupal\KernelTests;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceModifierInterface;
use Drupal\Core\DependencyInjection\ServiceProviderInterface;
use Symfony\Component\DependencyInjection\Definition;
/**
 * Provides special routing services for tests.
 */
class TestServiceProvider implements ServiceProviderInterface, ServiceModifierInterface {
  
  /**
   * @var \Drupal\simpletest\TestBase
   */
  public static $currentTest;
  
  /**
   * {@inheritdoc}
   */
  public function register(ContainerBuilder $container) {
    if (static::$currentTest && method_exists(static::$currentTest, 'containerBuild')) {
      static::$currentTest->containerBuild($container);
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function alter(ContainerBuilder $container) {
    if (static::$currentTest instanceof KernelTestBase) {
      static::addRouteProvider($container);
    }
  }
  
  /**
   * Add the on demand rebuild route provider service.
   *
   * @param \Drupal\Core\DependencyInjection\ContainerBuilder $container
   */
  public static function addRouteProvider(ContainerBuilder $container) {
    $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("simpletest.{$route_provider_service_name}", $definition);
    $container->setDefinition($id, new Definition(RouteProvider::class));
  }
}Classes
| Title | Deprecated | Summary | 
|---|---|---|
| TestServiceProvider | Provides special routing services for tests. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
