Php 测试对象的模拟公共方法
我有一个类有两个公共方法。它看起来类似于以下内容:Php 测试对象的模拟公共方法,php,unit-testing,testing,phpunit,mockery,Php,Unit Testing,Testing,Phpunit,Mockery,我有一个类有两个公共方法。它看起来类似于以下内容: 类请求 { 公共功能更新状态() { $isValid=$this->checkValidity(); //…接下来是使用$isValid的复杂逻辑 } /** *@returnbool */ 公共函数isValid() { //另一个复杂的逻辑 } } 我需要测试第一个函数-IntRequesr::updateStatus;但是,我需要运行测试。第一个带IntRequests::isValid返回false,第二个带true返回IntReq
类请求
{
公共功能更新状态()
{
$isValid=$this->checkValidity();
//…接下来是使用$isValid的复杂逻辑
}
/**
*@returnbool
*/
公共函数isValid()
{
//另一个复杂的逻辑
}
}
我需要测试第一个函数-IntRequesr::updateStatus
;但是,我需要运行测试。第一个带IntRequests::isValid
返回false
,第二个带true
返回IntRequests::isValid
我试图模拟该函数,但测试运行时调用的是实际的IntRequests::isValid
而不是模拟的函数
我的测试代码是
$intRequest=新的intRequest;
$mock=m::mock($intRequest);
$mock->shouldReceive('isValid')
->一次
->安德烈·图恩(真);
$res=$mock->updateStatus();
$this->assertTrue($res);
我尝试调用$res=$intRequest->updateStatus()
而不是$res=$mock->updateStatus()
,但运气不好
所以,我想知道是否可以模拟在测试方法内部调用的函数?您需要一个(模拟对象,其中一些方法是存根的,而其余的方法保持不变)。由于我只使用phpunit自己的mock库完成了这项工作,因此我只能向您指出文档,但似乎您应该将->makePartial()
添加到您的mock实例化中