私はPHPUnitとTDDから始めたばかりです。
とりわけ、私はこの質問に本当に答えることができません:これは良いテストですか?私は実際に自分のコードまたはすでにテストされたもの(つまり、フレームワークまたはPHP自体)をテストしていますか?
ちょっとした例ですが、これはテスト対象です。
class DateMax extends Constraint
{
/**
* @var string
*/
public $limit;
/**
* @var string
*/
private $invalidLimit = 'Option "limit" should be a valid date/time string.';
public function __construct($options = null)
{
parent::__construct($options);
if(false === strtotime($this->limit)) {
throw new InvalidOptionsException($this->invalidLimit, ['limit']);
}
}
}
InvalidOptionsException
無効な「制限」オプションが渡された場合に予想されることをテストしたい。それ以外の場合$constraint->limit
は正しい値を保持します。
/**
* @dataProvider getInvalidLimits
* @expectedException InvalidOptionsException
*/
public function testInvalidLimits($testLimit)
{
new DateMax($testLimit);
}
/**
* @dataProvider getValidLimits
*/
public function testValidLimits($testLimit)
{
$constraint = new DateMax($testLimit);
$this->assertEquals($testLimit, $constraint->limit);
}
/**
* @return array[]
*/
public function getInvalidLimits()
{
return array(array('invalid specification'), array('tomorr'));
}
/**
* @return array[]
*/
public function getValidLimits()
{
return array(array('now'), array('+1 day'),array('last Monday'));
}
質問は、これは意味がありますか、それともフレームワーク/ PHP自体をテストしていますか?