seine
Новичок
PHPUnit Мок, который вызывается несколько раз в одном методе с разными параметрами
Привет, всем. Есть метод, котрый использует мок (другой объект) и несколько раз вызывает один и тот же метод мока, но с разными параметрами, мок тоже должен возвращать разные значения.
Вот как это выглядит:
И метод, который его тестирует:
В testMethodForTest я указал значения, которые надо возвращать и в каком порядке (с помощью onConsecutiveCalls).
Но этого мало, еще хотелось бы убедиться, что метод getName вызывается с определенными параметрами. С помощью with() можно задать только значения параметров для одного вызова...
Забыл сказать, это все относится к PHPUnit.
-~{}~ 04.07.10 15:30:
Хм, поторопился тему создавать) Прочитал про at() и понял, что нужно писать несколько раз expects(), типа такого:
Тема закрыта.
Привет, всем. Есть метод, котрый использует мок (другой объект) и несколько раз вызывает один и тот же метод мока, но с разными параметрами, мок тоже должен возвращать разные значения.
Вот как это выглядит:
PHP:
// Метод, который надо протестировать.
// Все лишнее отброшенно, оставлена только суть
public function methodForTest() {
$name1 = $this->users->getName($id1);
$name2 = $this->users->getName($id2);
$name3 = $this->users->getName($id3);
// Что-то делаю с полученными значениями
}
PHP:
public function testMethodForTest() {
$this->users->expects($this->any())
->method('getName')
->will($this->onConsecutiveCalls(
$this->returnValue('name1'),
$this->returnValue('name2'),
$this->returnValue('name3')));
$this->walker->methodForTest();
}
Но этого мало, еще хотелось бы убедиться, что метод getName вызывается с определенными параметрами. С помощью with() можно задать только значения параметров для одного вызова...
Забыл сказать, это все относится к PHPUnit.
-~{}~ 04.07.10 15:30:
Хм, поторопился тему создавать) Прочитал про at() и понял, что нужно писать несколько раз expects(), типа такого:
PHP:
$this->walker->expects($this->at(0))
->method('getName')
->with($this->equalTo('first'))
->will($this->returnValue('name1'));
$this->walker->expects($this->at(1))
->method('getName')
->with($this->equalTo('second'))
->will($this->returnValue('name2'));