Настройка нескольких методов в объектах PHPUnit mock
Я пытаюсь создать макет объекта в PHP и PHPUnit. До сих пор у меня есть это:
$object = $this->getMock('object',
array('set_properties',
'get_events'),
array(),
'object_test',
null);
$object
->expects($this->once())
->method('get_events')
->will($this->returnValue(array()));
$mo = new multiple_object($object);
игнорируя мои ужасно двусмысленные имена объектов в течение минуты, я понимаю, что я сделал
- Создан макет объекта, с 2 методами настройки,
- Настроил метод get_events для возврата пустого массива и
- Бросил макет в конструктор.
то, что я хотел бы сделать сейчас, это настроить второй метод, но я не могу найти что-нибудь, объясняющее, как это сделать. Я хочу сделать что-то вроде
$object
->expects($this->once())
->method('get_events')
->will($this->returnValue(array()))
->expects($this->once())
->method('set_properties')
->with($this->equalTo(array()))
или некоторые такие, но это не работает. Как мне это сделать?
тангенциально, означает ли это, что я плохо структурировал свой код, если мне нужно настроить более одного метода для тестирования?
1 ответов
у меня нет никакого опыта работы с PHPUnit, но мое предположение было бы примерно так:
$object
->expects($this->once())
->method('get_events')
->will($this->returnValue(array()));
$object
->expects($this->once())
->method('set_properties')
->with($this->equalTo(array()));
вы уже пробовали?
Edit:
Ok, выполнив поиск кода, я нашел несколько примеров, которые могут помочь вам
проверить это пример
Они используют его так:
public function testMailForUidOrMail()
{
$ldap = $this->getMock('Horde_Kolab_Server_ldap', array('_getAttributes',
'_search', '_count',
'_firstEntry'));
$ldap->expects($this->any())
->method('_getAttributes')
->will($this->returnValue(array (
'mail' =>
array (
'count' => 1,
0 => 'wrobel@example.org',
),
0 => 'mail',
'count' => 1)));
$ldap->expects($this->any())
->method('_search')
->will($this->returnValue('cn=Gunnar Wrobel,dc=example,dc=org'));
$ldap->expects($this->any())
->method('_count')
->will($this->returnValue(1));
$ldap->expects($this->any())
->method('_firstEntry')
->will($this->returnValue(1));
(...)
}
может быть, ваша проблема в другом месте?
Дайте мне знать, если что помог.
Edit2:
вы можете попробовать это:
$object = $this->getMock('object', array('set_properties','get_events'));
$object
->expects($this->once())
->method('get_events')
->will($this->returnValue(array()));
$object
->expects($this->once())
->method('set_properties')
->with($this->equalTo(array()));