/** * Rebuilds \Drupal::getContainer(). * * Use this to update the test process's kernel with a new service container. * For example, when the list of enabled modules is changed via the internal * browser the test process's kernel has a service container with an out of * date module list. * * @see TestBase::prepareEnvironment() * @see TestBase::restoreEnvironment() * * @todo Fix https://www.drupal.org/node/2021959 so that module enable/disable * changes are immediately reflected in \Drupal::getContainer(). Until then, * tests can invoke this workaround when requiring services from newly * enabled modules to be immediately available in the same request. */ protected function rebuildContainer() { // Rebuild the kernel and bring it back to a fully bootstrapped state. $this->container = $this->kernel->rebuildContainer(); // Make sure the url generator has a request object, otherwise calls to // $this->drupalGet() will fail. $this->prepareRequestForGenerator(); }
/** * Rebuilds \Drupal::getContainer(). * * Use this to build a new kernel and service container. For example, when the * list of enabled modules is changed via the internal browser, in which case * the test process still contains an old kernel and service container with an * old module list. * * @see TestBase::prepareEnvironment() * @see TestBase::restoreEnvironment() * * @todo Fix https://www.drupal.org/node/2021959 so that module enable/disable * changes are immediately reflected in \Drupal::getContainer(). Until then, * tests can invoke this workaround when requiring services from newly * enabled modules to be immediately available in the same request. */ protected function rebuildContainer() { // Maintain the current global request object. $request = \Drupal::request(); // Rebuild the kernel and bring it back to a fully bootstrapped state. $this->container = $this->kernel->rebuildContainer(); // The request context is normally set by the router_listener from within // its KernelEvents::REQUEST listener. In the simpletest parent site this // event is not fired, therefore it is necessary to updated the request // context manually here. $this->container->get('router.request_context')->fromRequest($request); // Make sure the url generator has a request object, otherwise calls to // $this->drupalGet() will fail. $this->prepareRequestForGenerator(); }