web_tester.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 1,541 行 · 第 1/4 页

SVN-BASE
1,541
字号
     *    Sets the reject pattern     *    @param string $substring  Text to search for.     *    @param string $message    Customised message on failure.     *    @access public     */    function NoTextExpectation($substring, $message = '%s') {        $this->TextExpectation($substring, $message);    }        /**     *    Tests the expectation. False if the substring appears     *    in the text.     *    @param string $compare        Comparison value.     *    @return boolean               True if correct.     *    @access public     */    function test($compare) {        return ! parent::test($compare);    }        /**     *    Returns a human readable test message.     *    @param string $compare      Comparison value.     *    @return string              Description of success     *                                or failure.     *    @access public     */    function testMessage($compare) {        if ($this->test($compare)) {            $dumper = &$this->_getDumper();            return "Text [" . $this->_getSubstring() .                    "] not detected in [" .                    $dumper->describeValue($compare) . "]";        } else {            return $this->_describeTextMatch($this->_getSubstring(), $compare);        }    }}/** *    Test case for testing of web pages. Allows *    fetching of pages, parsing of HTML and *    submitting forms. *    @package SimpleTest *    @subpackage WebTester */class WebTestCase extends SimpleTestCase {    var $_browser;    var $_ignore_errors = false;        /**     *    Creates an empty test case. Should be subclassed     *    with test methods for a functional test case.     *    @param string $label     Name of test case. Will use     *                             the class name if none specified.     *    @access public     */    function WebTestCase($label = false) {        $this->SimpleTestCase($label);    }        /**     *    Announces the start of the test.     *    @param string $method    Test method just started.     *    @access public     */    function before($method) {        parent::before($method);        $this->setBrowser($this->createBrowser());    }    /**     *    Announces the end of the test. Includes private clean up.     *    @param string $method    Test method just finished.     *    @access public     */    function after($method) {        $this->unsetBrowser();        parent::after($method);    }        /**     *    Gets a current browser reference for setting     *    special expectations or for detailed     *    examination of page fetches.     *    @return SimpleBrowser     Current test browser object.     *    @access public     */    function &getBrowser() {        return $this->_browser;    }        /**     *    Gets a current browser reference for setting     *    special expectations or for detailed     *    examination of page fetches.     *    @param SimpleBrowser $browser    New test browser object.     *    @access public     */    function setBrowser(&$browser) {        return $this->_browser = &$browser;    }            /**     *    Clears the current browser reference to help the     *    PHP garbage collector.     *    @access public     */    function unsetBrowser() {        unset($this->_browser);    }        /**     *    Creates a new default web browser object.     *    Will be cleared at the end of the test method.     *    @return TestBrowser           New browser.     *    @access public     */    function &createBrowser() {        $browser = &new SimpleBrowser();        return $browser;    }        /**     *    Gets the last response error.     *    @return string    Last low level HTTP error.     *    @access public     */    function getTransportError() {        return $this->_browser->getTransportError();    }            /**     *    Accessor for the currently selected URL.     *    @return string        Current location or false if     *                          no page yet fetched.     *    @access public     */    function getUrl() {        return $this->_browser->getUrl();    }        /**     *    Dumps the current request for debugging.     *    @access public     */    function showRequest() {        $this->dump($this->_browser->getRequest());    }        /**     *    Dumps the current HTTP headers for debugging.     *    @access public     */    function showHeaders() {        $this->dump($this->_browser->getHeaders());    }        /**     *    Dumps the current HTML source for debugging.     *    @access public     */    function showSource() {        $this->dump($this->_browser->getContent());    }        /**     *    Dumps the visible text only for debugging.     *    @access public     */    function showText() {        $this->dump(wordwrap($this->_browser->getContentAsText(), 80));    }        /**     *    Simulates the closing and reopening of the browser.     *    Temporary cookies will be discarded and timed     *    cookies will be expired if later than the     *    specified time.     *    @param string/integer $date Time when session restarted.     *                                If ommitted then all persistent     *                                cookies are kept. Time is either     *                                Cookie format string or timestamp.     *    @access public     */    function restart($date = false) {        if ($date === false) {            $date = time();        }        $this->_browser->restart($date);    }        /**     *    Moves cookie expiry times back into the past.     *    Useful for testing timeouts and expiries.     *    @param integer $interval    Amount to age in seconds.     *    @access public     */    function ageCookies($interval) {        $this->_browser->ageCookies($interval);    }        /**     *    Disables frames support. Frames will not be fetched     *    and the frameset page will be used instead.     *    @access public     */    function ignoreFrames() {        $this->_browser->ignoreFrames();    }        /**     *    Switches off cookie sending and recieving.     *    @access public     */    function ignoreCookies() {        $this->_browser->ignoreCookies();    }        /**     *    Skips errors for the next request only. You might     *    want to confirm that a page is unreachable for     *    example.     *    @access public     */    function ignoreErrors() {        $this->_ignore_errors = true;    }        /**     *    Issues a fail if there is a transport error anywhere     *    in the current frameset. Only one such error is     *    reported.     *    @param string/boolean $result   HTML or failure.     *    @return string/boolean $result  Passes through result.     *    @access private     */    function _failOnError($result) {        if (! $this->_ignore_errors) {            if ($error = $this->_browser->getTransportError()) {                $this->fail($error);            }        }        $this->_ignore_errors = false;        return $result;    }    /**     *    Adds a header to every fetch.     *    @param string $header       Header line to add to every     *                                request until cleared.     *    @access public     */    function addHeader($header) {        $this->_browser->addHeader($header);    }        /**     *    Sets the maximum number of redirects before     *    the web page is loaded regardless.     *    @param integer $max        Maximum hops.     *    @access public     */    function setMaximumRedirects($max) {        if (! $this->_browser) {            trigger_error(                    'Can only set maximum redirects in a test method, setUp() or tearDown()');        }        $this->_browser->setMaximumRedirects($max);    }        /**     *    Sets the socket timeout for opening a connection and     *    receiving at least one byte of information.     *    @param integer $timeout      Maximum time in seconds.     *    @access public     */    function setConnectionTimeout($timeout) {        $this->_browser->setConnectionTimeout($timeout);    }        /**     *    Sets proxy to use on all requests for when     *    testing from behind a firewall. Set URL     *    to false to disable.     *    @param string $proxy        Proxy URL.     *    @param string $username     Proxy username for authentication.     *    @param string $password     Proxy password for authentication.     *    @access public     */    function useProxy($proxy, $username = false, $password = false) {        $this->_browser->useProxy($proxy, $username, $password);    }        /**     *    Fetches a page into the page buffer. If     *    there is no base for the URL then the     *    current base URL is used. After the fetch     *    the base URL reflects the new location.     *    @param string $url          URL to fetch.     *    @param hash $parameters     Optional additional GET data.     *    @return boolean/string      Raw page on success.     *    @access public     */    function get($url, $parameters = false) {        return $this->_failOnError($this->_browser->get($url, $parameters));    }        /**     *    Fetches a page by POST into the page buffer.     *    If there is no base for the URL then the     *    current base URL is used. After the fetch     *    the base URL reflects the new location.     *    @param string $url          URL to fetch.     *    @param hash $parameters     Optional additional GET data.     *    @return boolean/string      Raw page on success.     *    @access public     */    function post($url, $parameters = false) {        return $this->_failOnError($this->_browser->post($url, $parameters));    }        /**     *    Does a HTTP HEAD fetch, fetching only the page     *    headers. The current base URL is unchanged by this.     *    @param string $url          URL to fetch.     *    @param hash $parameters     Optional additional GET data.     *    @return boolean             True on success.     *    @access public     */    function head($url, $parameters = false) {        return $this->_failOnError($this->_browser->head($url, $parameters));    }        /**     *    Equivalent to hitting the retry button on the     *    browser. Will attempt to repeat the page fetch.     *    @return boolean     True if fetch succeeded.     *    @access public     */    function retry() {        return $this->_failOnError($this->_browser->retry());    }        /**     *    Equivalent to hitting the back button on the     *    browser.     *    @return boolean     True if history entry and     *                        fetch succeeded.     *    @access public     */    function back() {        return $this->_failOnError($this->_browser->back());    }        /**     *    Equivalent to hitting the forward button on the     *    browser.     *    @return boolean     True if history entry and     *                        fetch succeeded.     *    @access public     */    function forward() {        return $this->_failOnError($this->_browser->forward());    }        /**     *    Retries a request after setting the authentication     *    for the current realm.     *    @param string $username    Username for realm.     *    @param string $password    Password for realm.     *    @return boolean/string     HTML on successful fetch. Note     *                               that authentication may still have     *                               failed.     *    @access public     */    function authenticate($username, $password) {        return $this->_failOnError(                $this->_browser->authenticate($username, $password));    }        /**     *    Gets the cookie value for the current browser context.     *    @param string $name          Name of cookie.     *    @return string               Value of cookie or false if unset.     *    @access public

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?