PHPUnit: mock all methods except some

I think if you want to use PHPUnit's mock builder, then creating an array of all methods, removing the one you need, and passing it to setMethods is exactly what you'll need to do.

I've personally found it useful in a lot of cases to have a subclass of ReflectionClass that I can add methods to when I need them.

class MyReflectionClass extends ReflectionClass
{
    public function getAllMethodNamesExcept(array $excluded)
    {
        $methods = array_diff(
            get_class_methods($this->name), 
            $excluded
        );
        return $methods;
    }
}

You could also use a different mocking framework that supports what you want to do. For example, Phake has a thenCallParent method. I've started using Phake recently because I needed to be able to capture the parameters that were passed to a method. It is well-documented and worth a try.