You are here

public function CallTimesPrediction::check in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php \Prophecy\Prediction\CallTimesPrediction::check()

Tests that there was exact amount of calls made.

Parameters

Call[] $calls:

ObjectProphecy $object:

MethodProphecy $method:

Throws

\Prophecy\Exception\Prediction\UnexpectedCallsCountException

Overrides PredictionInterface::check

File

vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php, line 54

Class

CallTimesPrediction
Prediction interface. Predictions are logical test blocks, tied to `should...` keyword.

Namespace

Prophecy\Prediction

Code

public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) {
  if ($this->times == count($calls)) {
    return;
  }
  $methodCalls = $object
    ->findProphecyMethodCalls($method
    ->getMethodName(), new ArgumentsWildcard(array(
    new AnyValuesToken(),
  )));
  if (count($calls)) {
    $message = sprintf("Expected exactly %d calls that match:\n" . "  %s->%s(%s)\n" . "but %d were made:\n%s", $this->times, get_class($object
      ->reveal()), $method
      ->getMethodName(), $method
      ->getArgumentsWildcard(), count($calls), $this->util
      ->stringifyCalls($calls));
  }
  elseif (count($methodCalls)) {
    $message = sprintf("Expected exactly %d calls that match:\n" . "  %s->%s(%s)\n" . "but none were made.\n" . "Recorded `%s(...)` calls:\n%s", $this->times, get_class($object
      ->reveal()), $method
      ->getMethodName(), $method
      ->getArgumentsWildcard(), $method
      ->getMethodName(), $this->util
      ->stringifyCalls($methodCalls));
  }
  else {
    $message = sprintf("Expected exactly %d calls that match:\n" . "  %s->%s(%s)\n" . "but none were made.", $this->times, get_class($object
      ->reveal()), $method
      ->getMethodName(), $method
      ->getArgumentsWildcard());
  }
  throw new UnexpectedCallsCountException($message, $method, $this->times, $calls);
}