for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Basis\Test;
use Basis\Converter;
use Basis\Test;
use Exception;
class Mock
{
private $converter;
private $test;
public $params;
public $result;
public $calls = 0;
public function __construct(Converter $converter, Test $test, array $params = [])
$this->converter = $converter;
$this->test = $test;
if (count($params)) {
$this->params = $params;
}
public function withParams($params)
return $this;
public function handler($result)
$this->result = $result;
if (is_string($result)) {
if (!method_exists($this->test, $result)) {
throw new Exception("Invalid method ".get_class($this->test)."::$result");
$this->result = function($params) use ($result) {
$params = $this->converter->toObject($params);
return $this->test->$result($params);
};
public function willDo($result)
return $this->handler($result);
public function willReturn($result)