Php mockry重载类缺少方法
需要一些使用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
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();
我看不出是否应该为重载
完成丢失
当然,作为一种解决方案,你可以考虑创建一个模拟并注入它。