Adds support for Higher Order Expectations in Higher Order Tests

This commit is contained in:
luke
2021-07-09 16:50:15 +01:00
parent e4e9cb09e4
commit 2a8de0565f
6 changed files with 67 additions and 18 deletions

View File

@ -155,12 +155,30 @@ final class TestCall
return $this;
}
/**
* Saves the property accessors to be used on the target.
*/
public function __get(string $name): self
{
return $this->addChain($name);
}
/**
* Saves the calls to be used on the target.
*
* @param array<int, mixed> $arguments
*/
public function __call(string $name, array $arguments): self
{
return $this->addChain($name, $arguments);
}
/**
* Add a chain to the test case factory. Omitting the arguments will treat it as a property accessor.
*
* @param array<int, mixed>|null $arguments
*/
private function addChain(string $name, array $arguments = null): self
{
$this->testCaseFactory
->chains
@ -171,7 +189,9 @@ final class TestCall
if ($this->testCaseFactory->description !== null) {
$this->testCaseFactory->description .= ' → ';
}
$this->testCaseFactory->description .= sprintf('%s %s', $name, $exporter->shortenedRecursiveExport($arguments));
$this->testCaseFactory->description .= $arguments === null
? $name
: sprintf('%s %s', $name, $exporter->shortenedRecursiveExport($arguments));
}
return $this;