我有一个班级Version
,我想对isValidVersionString()
方法进行单元测试。
use InvalidArgumentException;
class Version
{
/**
* dot separated representation of the version
* @var string
*/
protected $versionString;
public function __construct($value)
{
$this->setVersionString($value);
}
/**
* @return string
*/
public function getVersionString(): string
{
return $this->versionString;
}
/**
* @param string $versionString
*
* @return Version
*/
public function setVersionString(string $versionString)
{
if(!$this->isValidVersionString($versionString)) {
throw new InvalidArgumentException();
}
$this->versionString = $versionString;
return $this;
}
/**
* valid format is xxx.xxx.xxx.xxx, with xxx not larger than 255
* @param string $value
* @return bool
*/
public function isValidVersionString(string $value): bool
{
//todo: implementation
}
}
我如何构建此单元测试?因为这个方法也是通过构造函数调用的。
答案 0 :(得分:0)
您可以使用该类的部分模拟:
class VersionTest extends \PHPUnit_Framework_TestCase
{
/**
* @test
*/
public function itShouldTest()
{
/** @var Version|\PHPUnit_Framework_MockObject_MockObject $mock */
$mock = $this->getMockBuilder(Version::class)
->disableOriginalConstructor()
->setMethods(['setVersionString','getVersionString'])
->getMock();
$this->assertTrue($mock->isValidVersionString('a-string'));
}
}
恕我直言,您只需将方法isValidVersionString
定义为static
,然后按原样进行测试。