Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 测试对象的模拟公共方法_Php_Unit Testing_Testing_Phpunit_Mockery - Fatal编程技术网

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实例化中