Codeception\Specify::specifyExecute PHP Method

specifyExecute() private method

private specifyExecute ( $test, $throws = false, $examples = [] )
    private function specifyExecute($test, $throws = false, $examples = array())
    {
        $message = false;
        if (is_array($throws)) {
            $message = $throws[1] ? strtolower($throws[1]) : false;
            $throws = $throws[0];
        }
        $result = $this->getTestResultObject();
        try {
            call_user_func_array($test, $examples);
            $this->specifyCheckMockObjects();
        } catch (\PHPUnit_Framework_AssertionFailedError $e) {
            if ($throws !== get_class($e)) {
                $result->addFailure(clone $this, $e, $result->time());
            }
            if ($message !== false && $message !== strtolower($e->getMessage())) {
                $f = new \PHPUnit_Framework_AssertionFailedError("exception message '{$message}' was expected, but '" . $e->getMessage() . "' was received");
                $result->addFailure(clone $this, $f, $result->time());
            }
        } catch (\Exception $e) {
            if ($throws) {
                if ($throws !== get_class($e)) {
                    $f = new \PHPUnit_Framework_AssertionFailedError("exception '{$throws}' was expected, but " . get_class($e) . ' was thrown');
                    $result->addFailure(clone $this, $f, $result->time());
                }
                if ($message !== false && $message !== strtolower($e->getMessage())) {
                    $f = new \PHPUnit_Framework_AssertionFailedError("exception message '{$message}' was expected, but '" . $e->getMessage() . "' was received");
                    $result->addFailure(clone $this, $f, $result->time());
                }
            } else {
                throw $e;
            }
        }
        if ($throws) {
            if (isset($e)) {
                $this->assertTrue(true, 'exception handled');
            } else {
                $f = new \PHPUnit_Framework_AssertionFailedError("exception '{$throws}' was not thrown as expected");
                $result->addFailure(clone $this, $f, $result->time());
            }
        }
    }