Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 mockry重载类缺少方法_Php_Unit Testing_Testing_Phpunit_Mockery - Fatal编程技术网

Php mockry重载类缺少方法

Php mockry重载类缺少方法,php,unit-testing,testing,phpunit,mockery,Php,Unit Testing,Testing,Phpunit,Mockery,需要一些使用mockry的帮助-我想重载一个类,该类是在方法中使用newhelperutil()创建的 使用mockry重载我可以做到这一点,但它给我留下了一个空的shell类。然后,我似乎必须创建所有被调用的方法。有没有办法创建一个重载的完整模拟,然后只更改一个方法 $mock = \Mockery::mock('overload:'.HelperUtil::class); $mock->shouldReceive('content')->andReturnUsin

需要一些使用mockry的帮助-我想重载一个类,该类是在方法中使用
newhelperutil()
创建的

使用mockry
重载
我可以做到这一点,但它给我留下了一个空的shell类。然后,我似乎必须创建所有被调用的方法。有没有办法创建一个重载的完整模拟,然后只更改一个方法

    $mock = \Mockery::mock('overload:'.HelperUtil::class);
    $mock->shouldReceive('content')->andReturnUsing(function() {
        return 'different content';
    });
谢谢

编辑: 我想我想做:

    $mock = \Mockery::mock('overload:'.HelperUtil::class)->shouldDeferMissing();
    $mock->shouldReceive('content')->andReturnUsing(function() {
        return 'different content';
    });
但这仍然不起作用=(

在GitHub上有一个关于它的

应忽略
应忽略
(以及其他此类标志 现在和未来)做工作,但不是在模拟上,而是在实例上 嘲弄

听起来令人困惑,但这是因为内部原因

当您执行
m::mock('重载:Foo');
mockry将执行并创建一个新的 基于
Mock.php
“模板”的名为
Foo
的类 默认情况下,
\u mockry\u ignoreMissing
标志设置为false

一旦mock方法结束,它就会创建一个重载的
Foo
对象并将其返回给我们。重载的
Foo
类也 可用于实例化新的
Foo
对象

调用
$m->shouldIgnoreMissing()
将在 对象,该对象由模拟方法返回

调用
new Foo()
Mock.php
模板默认为false,用于
\u mockry\u ignoreMissing

如果希望在新实例上将标志设置为true,则需要调用
shouldIgnoreming()
在该实例上,而不是在
$m

如我所见,功能“”已完成,因此您最好

$mock = \Mockery::mock('overload:'.HelperUtil::class)->shouldIgnoreMissing();
我看不出
是否应该为
重载
完成
丢失

当然,作为一种解决方案,你可以考虑创建一个模拟并注入它。