我有非常简单的 php 界面:
interface HasFormattableNumber {
function setNumber();
function setFormat();
function formatNumber();
}
接下来,我有许多实现这个接口的类。不幸的是,这些类不能有一个共同的祖先(可能是一个只实现这些方法一次的抽象类)。该类基本上如下所示:
class A implements HasFormattableNumber {
private $_number;
private $_format;
public function setNumber($n) {
$this->_number = $n;
}
public function setFormat($f) {
$this->_format = $f;
}
public function formatNumber() {
return sprintf($this->_format, $this->_number);
}
}
单元测试看起来像这样:
class ATest extends \PHPUnit_Framework_TestCase {
public function testShouldFormatNumber() {
$a = new A();
$a->setNumber(123);
$a->setFormat("xx-%d");
$this->assertEquals("xx-123", $a->formatNumber());
}
}
是否有可能以某种方式为所有接口实现重用这个测试用例?我知道我可以将 testShouldFormatNumber() 复制并粘贴到我的所有单元测试中,但如果可能的话,我更喜欢将它保存在一个地方。
php Traits 会以任何方式提供帮助吗?(但是,我还没有使用 php 5.4)