我正在自学 PHP 和 TDD(使用 PHP 和 PHPUnit)。我正在阅读Kent Beck的《示例测试驱动开发》一书。
例如,在第 3 章中,他为平等检验提出了以下建议:
public void testEquality() {
assertTrue(new Dollar(5).equals(new Dollar(5)));
}
在 Dollar 类中,他重写了 equals 方法:
public boolean equals(Object object) {
Dollar dollar = (Dollar) object;
return amount == dollar.amount;
}
我是 PHP 新手,这可能无济于事,但我不确定如何将其翻译成 PHP。
对于我尝试的第一个功能:
public function testEquality(){
$a = new Dollar(5);
$this->assertTrue($a->equals($b = new Dollar(5)));
}
这是正确的轨道吗?据我所知,现在必须将对象分配给一个变量,对吗?在我探索的那条路线之前
$this->assertTrue(new Dollar(5)->equals(new Dollar(5)));
抛出语法错误。然而,令人惊讶的是重构了早期的 testMultiplication 方法$this->assertEquals(new Dollar(10), $five->times(2));
。
就equals
方法而言,这对我来说完全陌生,我只是不知道从哪里开始。
如何在 PHP 中正确重建上述内容?如果我能做对一些,我想我可以处理其余的例子。
作为一个附带问题,有没有人知道这个 Money 示例是否已经在 PHP 中处理过并且代码在那里?