PHPUnit Stub,我想在test中替换一个函数

时间:2011-11-10 14:54:06

标签: php mocking phpunit stub

所以我有这个构建器运行一个应该是公共的buildClass方法,它需要一些参数。

在我的测试中,我想完全删除这些参数,并使用PHPUnit中的Mock添加完全不同的东西。

所以:来自:

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 个答案:

答案 0 :(得分:3)

你可以省略->with($this->anything(), $this->anything()) exepct(如果它在那里)以确保你将至少2个参数传递给该函数。

除了你,我明白你想要回到另一个班级。在那种情况下,我建议做:

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

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