Testing

Testing your configuration with WPZylos Config.

Unit Testing

Testing Config Access

use PHPUnit\Framework\TestCase;
use WPZylos\Framework\Config\Config;

class ConfigTest extends TestCase
{
    private Config $config;

    protected function setUp(): void
    {
        $this->config = new Config([
            'path' => __DIR__ . '/fixtures/config',
        ]);
    }

    public function testGetReturnsValue(): void
    {
        $name = $this->config->get('app.name');

        $this->assertEquals('Test App', $name);
    }

    public function testGetReturnsDefault(): void
    {
        $value = $this->config->get('nonexistent.key', 'default');

        $this->assertEquals('default', $value);
    }

    public function testHasChecksExistence(): void
    {
        $this->assertTrue($this->config->has('app.name'));
        $this->assertFalse($this->config->has('nonexistent'));
    }

    public function testSetUpdatesValue(): void
    {
        $this->config->set('app.debug', true);

        $this->assertTrue($this->config->get('app.debug'));
    }
}

Testing with Config Fixture

// tests/fixtures/config/app.php
return [
    'name' => 'Test App',
    'version' => '1.0.0',
    'debug' => false,
];

Testing Services with Config

class PluginServiceTest extends TestCase
{
    public function testUsesConfigValues(): void
    {
        $config = $this->createMock(Config::class);
        $config->method('get')
            ->with('app.version')
            ->willReturn('2.0.0');

        $service = new PluginService($config);

        $this->assertEquals('2.0.0', $service->getVersion());
    }
}

Running Tests

composer run test