私はこの階層のDoctrineクラスUserを持っています。Doctrine_Record - > BaseUser - > Userです。 PHP symfonyでは、配列アクセサーと同様にメソッドを使ってdoctrineレコードにアクセスすることができます。各クラスには@propertyとメソッドがあります。私はPHPUnitのテストケースを書いていたときDoctrine_Recordクラスのサブクラスを模倣し、そのプロパティをスタブする方法は?
$user['mode'] == $user->getMode()
、私は配列のアクセサメソッドが使用されている出来事を模擬することができません。
これはそれ
UserTest.php
public function testOnlyInactiveUsersAreRemoved()
{
$userGroup = new UserGroup();
$user_1 = $this->getMock('User');
$user_2 = $this->getMock('User');
$user_1->expects($this->at(0))->method('__get')->with($this->equalTo('mode'))->will($this->returnValue(1));
$user_2->expects($this->at(0))->method('__get')->with($this->equalTo('mode'))->will($this->returnValue(0));
$userGroup->adduser($user_1);
$userGroup->adduser($user_2);
$userGroup->clearInactiveUsers();
$this->assertCount(1, $userGroup->getUsers());
}
ための試験である
class User extends BaseUser {
public function clearInactiveUsers()
{
foreach ($this->users as $user) {
if (!$user['mode']) {
unset($this->users[array_search($user, $this->users)]);
$user->delete();
}
}
unset($user);
}
}
User.php
- ここは、ユニットテストからのサンプルコードだけでなく、実際のコードであります
私はコード内で発生$user['mode']
を模擬しようとしています。私が間違っていることは何ですか?
私は以下のリンクを参照し、上記のコードを書いています。
PHPUnit - creating Mock objects to act as stubs for properties
私は自分のコードを編集しました。 Userクラスのコードも上に貼り付けられます。 –
@dharmapurikar - 更新内容に基づいて回答を更新しました。 –