function KernelTestBaseTest::testMethodRequiresModule

Same name in other branches
  1. 9 core/tests/Drupal/KernelTests/KernelTestBaseTest.php \Drupal\KernelTests\KernelTestBaseTest::testMethodRequiresModule()
  2. 8.9.x core/tests/Drupal/KernelTests/KernelTestBaseTest.php \Drupal\KernelTests\KernelTestBaseTest::testMethodRequiresModule()

Tests that a test method is skipped when it requires a module not present.

In order to catch checkRequirements() regressions, we have to make a new test object and run checkRequirements() here.

@covers ::checkRequirements @covers ::checkModuleRequirements

@group legacy

File

core/tests/Drupal/KernelTests/KernelTestBaseTest.php, line 289

Class

KernelTestBaseTest
@coversDefaultClass \Drupal\KernelTests\KernelTestBase

Namespace

Drupal\KernelTests

Code

public function testMethodRequiresModule() : void {
    $this->expectDeprecation('Drupal\\Tests\\TestRequirementsTrait::checkModuleRequirements() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3418480');
    require __DIR__ . '/../../fixtures/KernelMissingDependentModuleMethodTest.php';
    // @phpstan-ignore-next-line
    $stub_test = new KernelMissingDependentModuleMethodTest();
    // We have to setName() to the method name we're concerned with.
    $stub_test->setName('testRequiresModule');
    // We cannot use $this->setExpectedException() because PHPUnit would skip
    // the test before comparing the exception type.
    try {
        $stub_test->publicCheckRequirements();
        $this->fail('Missing required module throws skipped test exception.');
    } catch (SkippedTestError $e) {
        $this->assertEquals('Required modules: module_does_not_exist', $e->getMessage());
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.