PHPUnit 无法在模拟后实例化真实 class

PHPUnit can't instantiate real class after mocking

我在一个单元测试中模拟了一个 class 之后,我不能再在另一个单元测试中使用真正的 class。

与此处问题相同,但答案不相关。

PHPUnit Mock Object replacing Real Class

我有两个单元测试:

class BarServiceTest {
  function setUp() {
    $this->fooService = $this->getMock('Application\Service\FooService', ['fooMethod'], [],'MockFooService', false, false, false);
  }
}

并且:

class FooServiceTest {
  function setUp() {
    $this->fooService = new \Application\Service\FooService;
  }
}

FooServiceTest运行时,fooService对象将包含Mock对象!

我该如何防止这种情况发生?更改 getMock 中的 mockClassName 参数确实会更改模拟的 class 名称,但当我尝试获取真实实例时它仍然是 returns 模拟对象。

我真的不明白这种行为。

显然这阻止了它!

$this->fooService = $this->getMockBuilder('Application\Service\FooService')
  ->disableOriginalConstructor()
  ->getMock();