【发布时间】:2016-10-21 23:45:00
【问题描述】:
有这个代码
<?php
public function trueOrFalse($handler) {
if (method_exists($handler, 'isTrueOrFalse')) {
$result= $handler::isTrueOrFalse;
return $result;
} else {
return FALSE;
}
}
您将如何对其进行单元测试?有没有机会模拟$handler?显然我需要某种
<?php
$handlerMock= \Mockery::mock(MyClass::class);
$handlerMock->shouldReceive('method_exists')->andReturn(TRUE);
但是做不到
【问题讨论】:
-
为什么你创建方法
trueOrFalse你可以在代码中检查method_exists,因为如果方法存在isTrue并且总是返回true你可以简单地将它替换为单个method_exists()但是如果你方法isTrue返回的所有数据你可以简单的if(!method_exists) return false或几个数据,或者你可以创建抽象类并根据需要设置这个方法来进行parrenting。 p.s.对不起我的英语。 -
这只是简化了。事实上
isTrue返回布尔值(假或真)作为其结果。所以问题是,是否有机会按原样测试它,还是需要重构?在这种情况下,是的,我可能需要从方法中删除method_exists
标签: php unit-testing phpunit mockery