2012-03-07 7 views
6

私は "テスト駆動型開発例"という名前の本を読んでいました。著者のケント・ベックです。ドルのオブジェクトをintに変換できません

私はPHPで同様の機能を書こうとしていますが、手順を理解していません。

オリジナル機能:

テスト機能:

public void testEquality() { 
    assertTrue(new Dollar(5).equals(new Dollar(5))); 
    assertFalse(new Dollar(5).equals(new Dollar(6))); 
} 

クラス機能:

public boolean equals(Object object) { 
    Dollar dollar = (Dollar) object; 
    return amount == dollar.amount; 
} 

マイコード:

テスト機能:

public function setup() { 
    $this->dollarFive = new Dollar(5); 
} 

public function testEquality() { 
    $this->assertTrue($this->dollarFive->equals(new Dollar(5))); 
} 

クラス関数:

class Dollar 
{ 
    public function __construct($amount) { 
    $this->amount = (int) $amount; 
    } 

    public function equals(Dollar $object) { 
    $this->Object = $object; 
    return $this->amount == $this->Object; 
    }  
} 

私は次のエラーを取得していたテストケースを実行中。クラスのドルの

オブジェクトはこの上でいくつかの助けが必要

をintに変換することができませんでした。どうすればこの問題を解決できますか?

+0

'$ this-> Object = $ object;とは何ですか? – KingCrunch

答えて

6
return $this->amount == $this->Object; 

$this->amount$this->Objectがintではない、intです。あなたは、このようにあなたがクラスのドルのオブジェクトが

をintに変換することができませんでした

おそらくしかし

return $this->amount == $this->Object->amount; 

意味

得るでしょう、お互いを比較してみました、また何かがありますあなたのクラスに興味があります

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; 
    }  
} 

あなたはたぶん

public function equals(Dollar $object) { 
    return $this->amount == $object->amount; 
    }  
関連する問題