【发布时间】:2016-10-28 10:16:26
【问题描述】:
我在我的类中为 php time() 方法创建了一个次要包装函数
class MyClass
{
public function myFuncion($unixTimeStamp)
{
$pending = $this->isPending($unixTimeStamp)
// data manipulation
return $result
}
protected function isPending($unixTimeStamp)
{
if ($unixTimeStamp > $this->currentTime()) {
return true;
}
return false;
}
public function currentTime()
{
return time();
}
}
我想在这个类中测试公共函数myFunction(),但我有点不知所措如何在不模拟 SUT 本身的情况下模拟 currentTime 方法(MyClass)
这样做的正确方法是什么?我觉得用一个方法(getCurrentTime)创建一个时间类并将其注入MyClass 是正确的,因为我只在代码中的一个地方检查时间。
无论如何,这是最好的方法吗?
编辑:我正在考虑制作一个 time 特征,因为它 looks like PhpUnit 可以模拟这个。仍然不确定这对于在单一方法中使用是否过大..
我还有什么其他选择?
【问题讨论】:
标签: php unit-testing testing phpunit