對(duì) Web 服務(wù)(Web Services)進(jìn)行上樁或模仿

2018-02-24 15:42 更新

對(duì) Web 服務(wù)(Web Services)進(jìn)行上樁或模仿

當(dāng)應(yīng)用程序需要和 web 服務(wù)進(jìn)行交互時(shí),會(huì)想要在不與 web 服務(wù)進(jìn)行實(shí)際交互的情況下對(duì)其進(jìn)行測(cè)試。為了簡(jiǎn)單地對(duì) web 服務(wù)進(jìn)行上樁或模仿,可以像使用 getMock() (見上文)那樣使用 getMockFromWsdl()。唯一的區(qū)別是 getMockFromWsdl() 所返回的樁件或者仿件是基于以 WSDL 描述的 web 服務(wù),而 getMock() 返回的樁件或者仿件是基于 PHP 類或接口的。

Example?9.20, “對(duì) web 服務(wù)上樁”展示了如何用 getMockFromWsdl() 來對(duì)(例如)GoogleSearch.wsdl 中描述的 web 服務(wù)上樁。

Example?9.20.?對(duì) web 服務(wù)上樁

<?php
class GoogleTest extends PHPUnit_Framework_TestCase
{
    public function testSearch()
    {
        $googleSearch = $this->getMockFromWsdl(
          'GoogleSearch.wsdl', 'GoogleSearch'
        );

        $directoryCategory = new stdClass;
        $directoryCategory->fullViewableName = '';
        $directoryCategory->specialEncoding = '';

        $element = new stdClass;
        $element->summary = '';
        $element->URL = 'https://phpunit.de/';
        $element->snippet = '...';
        $element->title = '<b>PHPUnit</b>';
        $element->cachedSize = '11k';
        $element->relatedInformationPresent = TRUE;
        $element->hostName = 'phpunit.de';
        $element->directoryCategory = $directoryCategory;
        $element->directoryTitle = '';

        $result = new stdClass;
        $result->documentFiltering = FALSE;
        $result->searchComments = '';
        $result->estimatedTotalResultsCount = 3.9000;
        $result->estimateIsExact = FALSE;
        $result->resultElements = array($element);
        $result->searchQuery = 'PHPUnit';
        $result->startIndex = 1;
        $result->endIndex = 1;
        $result->searchTips = '';
        $result->directoryCategories = array();
        $result->searchTime = 0.248822;

        $googleSearch->expects($this->any())
                     ->method('doGoogleSearch')
                     ->will($this->returnValue($result));

        /**
         * $googleSearch->doGoogleSearch() 將會(huì)返回上樁的結(jié)果,
         * web 服務(wù)的 doGoogleSearch() 方法不會(huì)被調(diào)用。
         */
        $this->assertEquals(
          $result,
          $googleSearch->doGoogleSearch(
            '00000000000000000000000000000000',
            'PHPUnit',
            0,
            1,
            FALSE,
            '',
            FALSE,
            '',
            '',
            ''
          )
        );
    }
}
?>
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)