PHPUnit Stub, я хочу заменить функцию в тесте - PullRequest
0 голосов
/ 10 ноября 2011

Итак, у меня есть этот конструктор, который запускает метод buildClass, который должен быть публичным, и он принимает пару аргументов.

В моем тесте я хочу полностью удалить эти аргументы и добавить что-то совершенно другое, используя Mockв PHPUnit.

Итак: from:

class ClassBuilder{
  public function buildClass($id, $some, $vars){
    $class = new Class($id, $some, $vars);
    return self::getClass(db_Class, $class);
  }
}

Так что вы можете получить мою идею здесь, я хочу сделать макет, чтобы он выполнял функцию возврата там.

$myClassStub->getMock("ClassBuilder");
$myClassStub->->expects($this->any())
    ->method("buildClass")
    ->with($this->anything(), $this->anything())
    ->will($this->returnCallback("getClass"));

Но я понятия не имею, как это работает.Так я и думал, но понятия не имею, где вообще приводить аргументы.Пожалуйста, помогите мне здесь, очень ценится.

/ Маркус

1 Ответ

3 голосов
/ 10 ноября 2011

Вы можете просто опустить исключение ->with($this->anything(), $this->anything()), если оно есть, чтобы убедиться, что вы передали как минимум 2 аргумента в эту функцию.

Помимо вас, я понял, что вы хотитевернуть другой класс.В этом случае я бы предложил сделать:

$yourClassToReturn = "..."; // create the class here

$myClassStub->getMock("ClassBuilder");
$myClassStub->expects($this->any())
    ->method("buildClass")
    ->with($this->anything(), $this->anything())
    ->will($this->returnValue($yourClassToReturn));
...