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

2018-02-24 15:42 更新

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號