Warum sind Unit Tests in Shopware wichtig?
Unit Tests helfen, Fehler frühzeitig zu erkennen und sorgen für eine stabilere Codebasis. Besonders bei Shopware-Plugins ist es wichtig, dass Funktionen zuverlässig arbeiten, um Probleme im Live-Betrieb zu vermeiden.
Was ist ein Unit Test?
Ein Unit Test überprüft eine einzelne Funktion oder Methode auf ihre Korrektheit, ohne Abhängigkeiten wie Datenbanken oder APIs.
Voraussetzungen für Unit Tests in Shopware
- 🔹 Installiertes PHPUnit (ab Version 9.x für PHP 8.3)
- 🔹 Shopware 6 Development-Umgebung mit Composer
- 🔹 Autoloading für Testklassen aktiviert (
composer dump-autoload
)
Ein einfacher Unit Test mit PHPUnit
Beispiel: Ein einfacher Test für eine Calculator
-Klasse.
namespace MyPlugin\Tests;
use PHPUnit\Framework\TestCase;
use MyPlugin\Service\Calculator;
class CalculatorTest extends TestCase {
public function testAddition() {
$calc = new Calculator();
$this->assertEquals(5, $calc->add(2, 3));
}
}
Unit Testing in Shopware: Ein Service testen
Shopware nutzt Dependency Injection – das bedeutet, dass wir Services isoliert testen können:
namespace MyPlugin\Tests;
use PHPUnit\Framework\TestCase;
use MyPlugin\Service\ProductService;
use Shopware\Core\Framework\Context;
class ProductServiceTest extends TestCase {
public function testGetProductName() {
$service = new ProductService();
$this->assertEquals('Produkt 1', $service->getProductName(1));
}
}
Mocking von Shopware-Abhängigkeiten
Mit Mockery oder PHPUnit-Mocks können wir Shopware-Core-Klassen nachbilden:
$repoMock = $this->createMock(ProductRepository::class);
$repoMock->method('find')->willReturn(new Product('Testprodukt'));
Fazit
Unit Testing hilft, Bugs frühzeitig zu erkennen und erhöht die Stabilität von Shopware-Plugins. Besonders bei größeren Projekten ist es eine unverzichtbare Praxis.
Brauchst du Unterstützung bei Unit Tests für dein Shopware-Plugin? Kontaktiere mich – ich helfe dir gerne weiter!