我正在阅读作者Kent Beck撰写的名为"测试驱动开发实例"的书.
我试图在PHP中编写类似的功能,但不理解步骤.
原功能:
测试功能:
public void testEquality() {
assertTrue(new Dollar(5).equals(new Dollar(5)));
assertFalse(new Dollar(5).equals(new Dollar(6)));
}
Run Code Online (Sandbox Code Playgroud)
班级功能:
public boolean equals(Object object) {
Dollar dollar = (Dollar) object;
return amount == dollar.amount;
}
Run Code Online (Sandbox Code Playgroud)
我的代码:
测试功能:
public function setup() {
$this->dollarFive = new Dollar(5);
}
public function testEquality() {
$this->assertTrue($this->dollarFive->equals(new Dollar(5)));
}
Run Code Online (Sandbox Code Playgroud)
类功能:
class Dollar
{
public function __construct($amount) {
$this->amount = (int) $amount;
}
public function equals(Dollar $object) {
$this->Object = $object;
return $this->amount == $this->Object;
}
}
Run Code Online (Sandbox Code Playgroud)
执行测试用例时,我收到以下错误.
类Dollar的对象无法转换为int
需要一些帮助.我怎样才能解决这个问题?
return $this->amount == $this->Object;
Run Code Online (Sandbox Code Playgroud)
$this->amount是一个int,$this->Object不是int.你试图相互比较,因此你会得到
类Dollar的对象无法转换为int
你可能意味着
return $this->amount == $this->Object->amount;
Run Code Online (Sandbox Code Playgroud)
但是,你班上也有一些奇怪的东西
class Dollar {
public $amount = 0; // <-- forgotten
public function __construct($amount) {
$this->amount = (int) $amount;
}
public function equals(Dollar $object) {
$this->Object = $object; // <--- ?!?
return $this->amount == $this->Object;
}
}
Run Code Online (Sandbox Code Playgroud)
你可能只想要
public function equals(Dollar $object) {
return $this->amount == $object->amount;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22738 次 |
| 最近记录: |