Phpunit 如何完全控制MockObject';什么样的行为?
我需要创建一个PHPUnit测试双精度:Phpunit 如何完全控制MockObject';什么样的行为?,phpunit,Phpunit,我需要创建一个PHPUnit测试双精度: 使用某些方法的原始实现 将一些其他方法代理到原始实现,但允许我监视它们 用具有固定返回值的NOP存根替换其他方法,不调用原始实现 我该怎么办? 在->getMockBuilder()->getMock(),->createMock(),->createPartialMock(),->createTestProxy(),和->getMockBuilder()->enableProxyingToOriginalMethods()->setProxyTar
- 使用某些方法的原始实现
- 将一些其他方法代理到原始实现,但允许我监视它们
- 用具有固定返回值的NOP存根替换其他方法,不调用原始实现
在
->getMockBuilder()->getMock()
,->createMock()
,->createPartialMock()
,->createTestProxy()
,和->getMockBuilder()->enableProxyingToOriginalMethods()->setProxyTarget()
之间,我似乎最多能够满足上述三个要求中的两个,但并非所有这三个问题。通过模拟链接解决:
受保护函数getMixedMock(
字符串$className,
数组$constructorArgs,
数组$stubMethods,
数组$proxyMethods
):数组
{
$stub=$this->getMockBuilder($className)
->setMethods($stubMethods)
->getMock();
$proxy=$this->getMockBuilder(本地::类)
->setConstructorArgs($constructorArgs)
->setMethods(数组\唯一(数组\合并($stubMethods,$proxyMethods)))
->enableProxyingToOriginalMethods()
->setProxyTarget($stub)//getMock();
返回[$stub,$proxy];
}
公共功能测试()
{
[$stub,$proxy]=$this->getMixedMock(
LocalFSAdapter::类,
["/"],
[“写”],
['has']
);
//应该使用$stub监视必须存根的方法
//必须代理的方法应使用$proxy进行监视
//使用$proxy进行测试
}
根据测试内容,可能需要创建不同的模拟