What are the advantages of using Mockup classes in PHP testing?

When writing unit tests in PHP, it is common to need to test a class that depends on another class. In order to isolate the class being tested, it is useful to create mockup classes that mimic the behavior of the dependent classes. This allows for more focused and reliable testing without the need for the actual dependent classes to be present or fully functional.

// Example of using a mockup class in PHP testing

class Dependency {
    public function getValue() {
        return 10;
    }
}

class MyClass {
    private $dependency;

    public function __construct(Dependency $dependency) {
        $this->dependency = $dependency;
    }

    public function doSomething() {
        $value = $this->dependency->getValue();
        return $value * 2;
    }
}

class MockDependency extends Dependency {
    public function getValue() {
        return 5;
    }
}

// Test case using the mockup class
$mockDependency = new MockDependency();
$myClass = new MyClass($mockDependency);
$result = $myClass->doSomething();

// Assert that the result is as expected
assert($result == 10);