MagentoConfigFixture Annotation for configuration integration testing

In Magento 2, the magentoConfigFixture annotation is used in integration tests to provide a set of configuration values that should be applied during the test. This annotation is useful for testing scenarios where you need to manipulate the configuration settings temporarily. The annotation is typically applied at the class level and provides a clean way to set configuration values specifically for the scope of the test.

Here’s an example of how you can use the magentoConfigFixture annotation in a Magento 2 integration test:

// app/code/Vendor/Module/Test/Integration/ConfigTest.php

namespace Vendor\Module\Test\Integration;

use Magento\TestFramework\Helper\Bootstrap;
use Magento\TestFramework\TestCase\AbstractController;
use Magento\Framework\App\Config\ScopeConfigInterface;

/**
 * @magentoConfigFixture current_store general/locale/code en_US
 * @magentoConfigFixture current_store general/country/default US
 */
class ConfigTest extends AbstractController
{
    /**
     * @var ScopeConfigInterface
     */
    private $scopeConfig;

    protected function setUp(): void
    {
        parent::setUp();
        $this->scopeConfig = Bootstrap::getObjectManager()->get(ScopeConfigInterface::class);
    }

    /**
     * Test the configuration values.
     */
    public function testConfigValues()
    {
        $localeCode = $this->scopeConfig->getValue('general/locale/code');
        $defaultCountry = $this->scopeConfig->getValue('general/country/default');

        $this->assertEquals('en_US', $localeCode);
        $this->assertEquals('US', $defaultCountry);
    }
}

In this example:

  • The @magentoConfigFixture annotation is applied at the class level, setting two configuration values (general/locale/code and general/country/default) for the current store scope.
  • The setUp method initializes the $scopeConfig instance for later use in the test.
  • The testConfigValues method checks if the configuration values set in the annotation are applied correctly.

Remember to replace Vendor\Module with your actual module namespace. Additionally, you can modify the annotation to set other configuration values as needed for your specific test scenario.

Before running the test, ensure that your Magento environment is set up correctly, and you may need to clear the cache for the changes to take effect. You can run the test using the following command:

vendor/bin/phpunit -c dev/tests/integration/phpunit.xml.dist app/code/Vendor/Module/Test/Integration/ConfigTest.php

This example assumes you have set up the necessary test environment, and PHPUnit is available in your Magento project. Adjust the paths and commands based on your project structure and configuration.