phpunit - 只模拟类中的一些方法

时间:2014-08-15 16:54:02

标签: php phpunit

我有一个类我有一个想要模拟的方法,但是我很难让phpunit合作。

一个例子:

  /**
   * @test
   */
  public function mockTest() {
    $mock = $this->getMock('ApiMock', array ('search'));
    $mock->expects($this->once())
      ->method('search');

    $mock->search('test');
    $mock->somethingElse('another test');
  }

使用这个课程:

class ApiStub {
  public function search($var) {
    return $var;
  }

  public function somethingElse($var) {
    return $var;
  }
}

引发以下错误:

PHP Fatal error:  Call to undefined method Mock_ApiMock_14fd352a::somethingElse()

我希望能够模拟search()函数,但仍然有一些东西()做它常见的东西。

1 个答案:

答案 0 :(得分:1)

对于任何有类似问题的未来人。

问题是ApiStub与测试用例位于同一个文件中,而这个测试用例恰好位于命名空间中。我解决了这个问题:

$mock = $this->getMock('namespace\subnamespace\ApiMock', array ('search'));