I am trying to create a integration test to check if my module is enabled or not.
Following is the code in my test class
<?php namespace Anshu\Learning\Test\Integration; use Magento\Framework\App\DeploymentConfig; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Component\ComponentRegistrar; use Magento\Framework\Module\ModuleList; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use PHPUnit\Framework\TestCase; class LearningConfigTest extends TestCase { private $moduleName = 'Anshu_Learning'; public function testIsModuleConfiguredAndEnabled() { /** * @var ObjectManager $objectManager */ $objectManager = new ObjectManager($this); /** * @var DirectoryList $dirList */ $dirList = $objectManager->getObject(DirectoryList::class, ['root' => BP]); /** * @var DeploymentConfig\Reader $configReader */ $configReader = $objectManager->getObject(DeploymentConfig\Reader::class, ['dirList' => $dirList]); /** * @var DeploymentConfig $deploymentConfig */ $deploymentConfig = $objectManager->getObject(DeploymentConfig::class, ['reader' => $configReader]); /** * @var ModuleList $moduleList */ $moduleList = $objectManager->getObject(ModuleList::class, ['config' => $deploymentConfig]); $this->assertTrue($moduleList->has($this->moduleName), 'Module is not enabled'); } } While running the test I am getting error message Use of undefined constant BP - assumed 'BP' (this will throw an Error in a future version of PHP)
And when I am changing BP to DirectoryList::ROOT then I am getting following error message
array_keys() expects parameter 1 to be array, null given vendor/magento/framework/App/DeploymentConfig/Reader.php:113 vendor/magento/framework/App/DeploymentConfig.php:140 vendor/magento/framework/App/DeploymentConfig.php:70 vendor/magento/framework/Module/ModuleList.php:143 vendor/magento/framework/Module/ModuleList.php:114 app/code/Anshu/Learning/Test/Integration/LearningConfigTest.php:49 PHP version is 7.2
May someone can help me to figure out and fix the issue.