【发布时间】:2016-01-21 04:23:34
【问题描述】:
例如:
测试代码
function it_records_last_checked()
{
$this->getWrappedObject()->setServiceLocator( $this->getServiceLocator() );
$this->isAvailable( 'google.com' )->shouldReturn( false );
/** @var Url $last */
$last = $this->getLastChecked();
$last->shoudHaveType( Url::class );
$last->host->registrableDomain->shouldBeLike('google.com');
}
规范包装了一个对象,其代码如下:
namespace Application\Service;
use Application\Exception\DomainInvalidException;
use Application\Model\Whois;
use Pdp\Uri\Url;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorAwareTrait;
use Application\Exception\DomainRequiredException;
class DomainService implements ServiceLocatorAwareInterface{
use ServiceLocatorAwareTrait;
/** @var Url */
protected $last_checked;
/**
* @return Url
*/
public function getLastChecked()
{
return $this->last_checked;
}
/**
* @param Url $last_checked
*/
public function setLastChecked( $last_checked )
{
$this->last_checked = $last_checked;
}
/**
* Use available configuration to determine if a domain is available
* @param $domain
* @return bool
* @throws DomainRequiredException
* @throws \Exception
*/
public function isAvailable($domain)
{
if( !$domain )
throw new DomainRequiredException();
$pslManager = new \Pdp\PublicSuffixListManager();
$parser = new \Pdp\Parser($pslManager->getList());
$host = 'http://' . $domain;
if( !$parser->isSuffixValid( $host ) )
throw new DomainInvalidException();
$this->last_checked = $parser->parseUrl($host);
$whois = new Whois($this->last_checked->host->registerableDomain);
return $whois->isAvailable();
}
}
该服务设置它的 last_checked 成员,例如我想测试其类型。它似乎没有返回一个包装的对象,它返回的是实际的 Pdp\Uri\Url 实例。
编写测试的规则是什么,以确保我们得到包装的对象(主题)?
谢谢!
【问题讨论】: