jeudi 3 septembre 2015

Decouple or mock?

Suppose I have this class:

class SomeClass
{
    // Top level function
    public function execute($command)
    {
        // Get output from system tool
        $output = $this->runTool($command);

        // Check output for errors
        if ($this->hasError($output))
            return false;

        // And parse success response from tool
        return $this->parseOutput($output);
    }

    // There we're make a call to system
    private function runTool($command)
    {
        return `/some/system/tool $command`;
    }
    [...]
}

I do not want to run system tool in my test, I want to replace a system call with predefined output.

So, the question is - should I create another class, replace system call in it and mock that class in the test, or I can mock only that function of class which I will test?

Sure, both approaches will work, but which of them will be serve testing purposes better?

Aucun commentaire:

Enregistrer un commentaire