是否可以在PhpUnit中的测试用例外创建一个模拟?

Khr*_*riz 5 php phpunit unit-testing mocking

它可能看起来很愚蠢,希望不是,但我想创建一个服务,它将为使用我的项目的人返回模拟对象,这样他们就可以模拟我项目中的所有类并测试他们的代码.

我的想法是提供这种服务,以便可以在其他项目的测试用例中调用它,并为每个测试获得适当的模拟.

那可能吗?或者还有其他方法可以做到这一点.顺便说一句,由于项目的限制,我不能使用任何模拟库.

Max*_*sky 8

对的,这是可能的.在引擎盖下,该getMock方法使用PHPUnit_Framework_MockObject_Generator该类.所以你可以直接使用它:

PHPUnit_Framework_MockObject_Generator::getMock($originalClassName, $methods)
Run Code Online (Sandbox Code Playgroud)

但是你会失去所有期望的捷径$this->once().您必须自己实例化期望:

$mock->expects(\PHPUnit_Framework_TestCase::once())

查看PHPUnit源代码,了解如何构建模拟

  • 在更新版本的PHPUnit中,你需要使用`(new PHPUnit\Framework\MockObject\Generator()) - > getMock(...)` (2认同)