【问题标题】:phpunit - Only mocking some methods in a classphpunit - 仅模拟类中的某些方法
【发布时间】:2014-10-09 10:36:13
【问题描述】:

我有一个类有一个我想模拟的方法,但我无法让 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() 函数,但仍然有 somethingElse() 做它通常的事情。

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-02
      • 2019-07-29
      • 2018-05-26
      • 2021-06-16
      • 1970-01-01
      • 2013-01-27
      • 2016-04-21
      • 2014-05-05
      相关资源
      最近更新 更多